RabbitMQ消息顺序性保障

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

场景分析:

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

解决方案:

  1. 根据业务执行顺序将原先的一个 queue 拆分为多个,每个 queue 配一个 consumer
  1. 依旧是原有的单 queue + 单 consumer ,但 consumer 内部使用内存队列保证消息顺序性(例如 ArrayBlockingQueue),然后分发给底层不同的 worker 来处理
相关推荐
阳光不锈@6 小时前
三大主流消息队列架构设计思想剖析:从 RabbitMQ 到 RocketMQ 的改造实践
kafka·rabbitmq·rocketmq·rabbit改造rocket·去除rabbitmq·rabbitmq改造
catino6 天前
RabbitMQ详解
分布式·rabbitmq·ruby
叶总没有会6 天前
RabbitMQ高级
分布式·rabbitmq
Linux实战笔记8 天前
记一次消息队列选型对比线上排查:Kafka/RabbitMQ/Pulsar 技术选型
kafka·rabbitmq·高并发·pulsar·消息队列选型
张彦峰ZYF8 天前
一条消息的丢与重:Kafka 与 RabbitMQ 可靠投递的确认、位点、死信与幂等全链路
后端·kafka·消息队列·rabbitmq·isr·解耦与削峰·丢失与重复
用户849137175471610 天前
订单超时未支付自动取消实现方案 | 三种方案详解
redis·面试·rabbitmq
蓝胖的四次元口袋10 天前
RabbitMQ知识梳理(2)
分布式·rabbitmq
叶总没有会10 天前
RabbitMQ基础--java客户端
java·rabbitmq·java-rabbitmq
Thomas.Sir11 天前
第31课:微服务消息驱动(RabbitMQ/RocketMQ)适配与解耦实战
微服务·rabbitmq·rocketmq
蓝胖的四次元口袋11 天前
RabbitMQ知识梳理(1)
分布式·rabbitmq