RabbitMQ消息顺序性保障

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

场景分析:

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

解决方案:

  1. 根据业务执行顺序将原先的一个 queue 拆分为多个,每个 queue 配一个 consumer
  1. 依旧是原有的单 queue + 单 consumer ,但 consumer 内部使用内存队列保证消息顺序性(例如 ArrayBlockingQueue),然后分发给底层不同的 worker 来处理
相关推荐
晓庆的故事簿11 小时前
JAVA搭配RabbitMQ使用
java·rabbitmq·java-rabbitmq
qq_269870431 天前
java rabbitmq 队列在Springboot的设计
java·rabbitmq·java-rabbitmq
_F_y1 天前
仿RabbitMQ实现消息队列-客户端模块实现
c++·算法·rabbitmq
fengxin_rou2 天前
JVM 内存结构与内存溢出 / 泄漏问题全解析
java·开发语言·jvm·分布式·rabbitmq
小江的记录本2 天前
【Kafka核心】Kafka高性能的四大核心支柱:零拷贝、批量发送、页缓存、压缩
java·数据库·分布式·后端·缓存·kafka·rabbitmq
_F_y3 天前
仿RabbitMQ实现消息队列-服务端核心模块实现(5)
分布式·rabbitmq
_F_y3 天前
仿RabbitMQ实现消息队列-服务端核心模块实现(4)
分布式·rabbitmq
Albert Edison3 天前
【RabbitMQ】发布确认模式(使用案例)
分布式·rabbitmq·ruby
Dontla5 天前
aio-pika介绍(基于asyncio的Python异步消息队列客户端,用于操作RabbitMQ,并实现对AMQP协议支持)
python·rabbitmq·ruby
_F_y6 天前
仿RabbitMQ实现消息队列-服务端核心模块实现(3)
c++·算法·rabbitmq