RabbitMQ 如何保证消息顺序 --- 2022-04-03

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ 如何保证消息顺序 --- 2022-04-03相关的知识,希望对你有一定的参考价值。

参考技术A

RabbitMQ使用过程中,有些业务场景需要我们保证顺序消费,例如:业务上产生三条消息,分别是对数据的增加、修改、删除操作,如果没有保证顺序消费,执行顺序可能变成删除、修改、增加,这就乱了。

如下如:

RabbitMQ的消息顺序问题,需要分三个环节看待,发送消息的顺序、队列中消息的顺序、消费消息的顺序。

消息发送端的顺序,大部分业务不做要求,谁先发消息无所谓,如果遇到业务一定要发送消息也确保顺序,那意味着,只能全局加锁一个个的操作,一个个的发消息,不能并发发送消息。

RabbitMQ中,消息最终会保存在队列中,在同一个队列中,消息是顺序的,先进先出原则,这个由Rabbitmq保证,通常也不需要开发关心。

我们说如何保证消息顺序性,通常说的就是消费者消费消息的顺序,在多个消费者消费同一个消息队列的场景,通常是无法保证消息顺序的,开篇的示意图已经说明,虽然消息队列的消息是顺序的,但是多个消费者并发消费消息,获取的消息的速度、执行业务逻辑的速度快慢、执行异常等等原因都会导致消息顺序不一致。

例如:消息A、B、C按顺序进入队列,消费者A1拿到消息A、消费者B1拿到消息B, 结果消费者B执行速度快,就跑完了,又或者消费者A1挂了,都会导致消息顺序不一致。

解决消费顺序的问题,通常就是一个队列只有一个消费者
这样就可以一个个消息按顺序处理,缺点就是并发能力下降了,无法并发消费消息,这是个取舍问题。

Kafka如何保证消息顺序消费

参考技术A 上一篇 <<< Kafka如何实现分区及指定分区消费
下一篇 >>> Kafka如何保证高吞吐量

推荐阅读:
<<< 消息中间件的核心思想
<<< 消息中间件常见问题汇总
<<< 基于Netty简单手写消息中间件思路
<<< 消息队列常用名词与中间件对比
<<< Rabbitmq基础知识
<<< Rabbitmq示例之点对点简单队列
<<< Rabbitmq示例之工作(公平)队列
<<< Rabbitmq示例之发布订阅模式
<<< Rabbitmq示例之路由模式Routing
<<< Rabbitmq示例之通配符模式Topics
<<< Rabbitmq示例之RPC模式
<<< Rabbitmq队列模式总结
<<< Rabbitmq如何保证消息不丢失
<<< Springboot利用AmqpTemplate整合Rabbitmq
<<< Rabbitmq如何保证幂等性
<<< Rabbitmq的重试策略
<<< Rabbitmq通过死信队列实现过期监听
<<< Rabbitmq解决分布式事务思路
<<< Rabbitmq解决分布式事务demo
<<< Rabbitmq环境安装
<<< Kafka中的专业术语都有哪些
<<< Kafka的设计原理介绍
<<< Kafka集群如何实现相互感知
<<< Kafka如何实现分区及指定分区消费
<<< Kafka如何保证高吞吐量
<<< Kafka集群环境搭建
<<< RocketMQ架构原理
<<< RocketMQ、RabbitMQ和Kafka的对比
<<< SpringBoot整合RocketMQ示例
<<< RocketMQ保证顺序消费demo
<<< RocketMQ如何动态扩容和缩容
<<< RocketMQ如何解决分布式事务
<<< RocketMQ单机版本安装
<<< RocketMQ集群环境程序启用相关知识点
<<< RocketMQ单机做主备实操
<<< RocketMQ所有配置说明

以上是关于RabbitMQ 如何保证消息顺序 --- 2022-04-03的主要内容,如果未能解决你的问题,请参考以下文章

如何保证RabbitMQ消息顺序消费

RabbitMQ如何保证顺序消费

RabbitMQ面试题:如何解决消息的顺序问题? --- 2022-04-03

高薪程序员&面试题精讲系列127之如何设计一个消息队列?如何保证消息的执行顺序?

如何保证消息队列的可靠性传输?

3、rabbitmq如何保证消息不被重复消费