RabbitMQ消息顺序性保障

RabbitMQ 没有属性设置消息的顺序性,只能设置消息的优先级,因此消息顺序性保障只能在 consumer 上实现

场景分析:

生产者向 RabbitMQ 里发送了三条数据, 顺序依次是 data1-> data2 -> data3,压入的是一个内存队列。有三个消费者分别从 MQ 中消费这三条数据中的一条,结果消费者2先执行完操作,把 data2 存入数据库,然后是 data1 -> data3,此时发生顺序错乱

解决方案:

  1. 根据业务执行顺序将原先的一个 queue 拆分为多个,每个 queue 配一个 consumer
  1. 依旧是原有的单 queue + 单 consumer ,但 consumer 内部使用内存队列保证消息顺序性(例如 ArrayBlockingQueue),然后分发给底层不同的 worker 来处理
相关推荐
紫璨月4 小时前
rabbitMQ读取不到ThreadLocal消息的bug
rabbitmq·bug·java-rabbitmq
DavidSoCool2 天前
RabbitMQ使用topic Exchange实现微服务分组订阅
分布式·微服务·rabbitmq
Bug退退退1232 天前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
Bug退退退1233 天前
RabbitMQ 高级特性之死信队列
java·分布式·spring·rabbitmq
m0_474606783 天前
RabbitMQ使用延迟插件实现延迟消息
java·rabbitmq
幼稚园的山代王3 天前
RabbitMQ 4.1.1初体验-队列和交换机
分布式·rabbitmq·ruby
csdn_aspnet4 天前
在 Windows 机器上安装和配置 RabbitMQ
windows·rabbitmq
Bug退退退1234 天前
RabbitMQ 高级特性之 TTL
java·分布式·spring·rabbitmq
幼稚园的山代王4 天前
RabbitMQ 4.1.1初体验
分布式·rabbitmq·ruby
csdn_aspnet4 天前
Windows Server 上的 RabbitMQ 安装和配置
windows·rabbitmq