RabbitMQ消息顺序性保障

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

场景分析:

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

解决方案:

  1. 根据业务执行顺序将原先的一个 queue 拆分为多个,每个 queue 配一个 consumer
  1. 依旧是原有的单 queue + 单 consumer ,但 consumer 内部使用内存队列保证消息顺序性(例如 ArrayBlockingQueue),然后分发给底层不同的 worker 来处理
相关推荐
橙子圆1232 天前
RabbitMQ知识1
分布式·rabbitmq
無a伟4 天前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
小楼昨夜又东风1264 天前
kafka、rocketmq、rabbitmq,有什么区别
kafka·rabbitmq·rocketmq
無a伟4 天前
RabbitMq高级特性:消息确认,持久化,重试机制
java·分布式·rabbitmq
Dreams_l7 天前
如何保证RabbitMQ消息可靠传输
java·rabbitmq·java-rabbitmq
专注仿真9 天前
RabbitMQ消息队列实战项目
数据结构·rabbitmq
Dreams_l9 天前
RabbitMQ在SpringBoot中的应用
spring boot·rabbitmq·java-rabbitmq
無a伟10 天前
RabbitMQ :与AMQP的关系、核心组件、交换机类型
分布式·rabbitmq
jyOverQ10 天前
RabbitMQ 消息积压怎么办?Prefetch、消费者并发与扩容
分布式·后端·rabbitmq
jyOverQ11 天前
RabbitMQ 延迟消息怎么实现?TTL 与死信队列
分布式·后端·rabbitmq·ruby