RabbitMQ消息顺序性保障

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

场景分析:

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

解决方案:

  1. 根据业务执行顺序将原先的一个 queue 拆分为多个,每个 queue 配一个 consumer
  1. 依旧是原有的单 queue + 单 consumer ,但 consumer 内部使用内存队列保证消息顺序性(例如 ArrayBlockingQueue),然后分发给底层不同的 worker 来处理
相关推荐
不会写代码的ys2 小时前
仿RabbitMQ实现消息队列(二)-安装
服务器·分布式·rabbitmq
Microsoft Word2 小时前
Rabbitmq基础篇
网络·分布式·rabbitmq
csdn_aspnet2 小时前
.NETCore、.NET 7 和 RabbitMQ 的发布-订阅模式
rabbitmq·.netcore·.net7.
csdn_aspnet2 小时前
RabbitMQ简介
rabbitmq
blammmp7 小时前
RabbitMQ的高级特性
分布式·rabbitmq
不会写代码的ys21 小时前
仿RabbitMQ实现消息队列(一)--项目介绍
分布式·rabbitmq
兜兜风d'1 天前
RabbitMQ死信队列详解
c++·rabbitmq·java-rabbitmq
程序员卷卷狗1 天前
RabbitMQ 在拼团系统中的应用:延迟队列、订单超时与消息幂等
rabbitmq·ruby·java-rabbitmq
兜兜风d'2 天前
RabbitMQ消息分发详解:从默认轮询到智能负载均衡
spring boot·分布式·rabbitmq·负载均衡·ruby·java-rabbitmq
zyh200504302 天前
RabbitMQ概述
分布式·消息队列·rabbitmq·消息中间件·amqp