RabbitMQ消息顺序性保障

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

场景分析:

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

解决方案:

  1. 根据业务执行顺序将原先的一个 queue 拆分为多个,每个 queue 配一个 consumer
  1. 依旧是原有的单 queue + 单 consumer ,但 consumer 内部使用内存队列保证消息顺序性(例如 ArrayBlockingQueue),然后分发给底层不同的 worker 来处理
相关推荐
阿无,1 天前
RabbitMQ面试题
分布式·rabbitmq
Rain的Java大神之路3 天前
如何避免订单重复提交
java·redis·后端·面试·架构·rabbitmq·rocketmq
heimeiyingwang5 天前
【架构实战】消息队列选型与异步架构设计:从Kafka到RabbitMQ,一次聊透
架构·kafka·rabbitmq
水无痕simon6 天前
6、六大工作模式-2
java·rabbitmq
lazy H6 天前
不同的消息队列有什么区别?Kafka、RabbitMQ、RocketMQ、Pulsar、ActiveMQ 选型对比
后端·中间件·kafka·rabbitmq·rocketmq
IT机器猫7 天前
RabbitMQ基础二
java·spring boot·分布式·spring cloud·log4j·rabbitmq·springamqp
水无痕simon7 天前
3 RabbitMQ基础
分布式·rabbitmq·ruby
番茄炒鸡蛋加糖8 天前
RabbitMQ 全套复盘 + Nacos+ES+MyBatis-Plus 梳理
分布式·rabbitmq
城管不管9 天前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
apgk19 天前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq