消息队列—如何保证 RabbitMQ 消息的顺序性?
创作时间:
作者:
@小白创作中心
消息队列—如何保证 RabbitMQ 消息的顺序性?
引用
CSDN
1.
https://blog.csdn.net/weixin_62079735/article/details/136839048
为什么要保证顺序
消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常。举例:
比如通过mysql binlog进行两个数据库的数据同步,由于对数据库的数据操作是具有顺序性的,如果操作顺序搞反,就会造成不可估量的错误。比如数据库对一条数据依次进行了 插入->更新->删除操作,这个顺序必须是这样,如果在同步过程中,消息的顺序变成了 删除->插入->更新,那么原本应该被删除的数据,就没有被删除,造成数据的不一致问题。
出现顺序错乱的场景
(1)rabbitmq
①一个queue,有多个consumer去消费,这样就会造成顺序的错误,consumer从MQ里面读取数据是有序的,但是每个consumer的执行时间是不固定的,无法保证先读到消息的consumer一定先完成操作,这样就会出现消息并没有按照顺序执行,造成数据顺序错误。
rabbitmq消息顺序错乱第一种情况示意图
②一个queue对应一个consumer,但是consumer里面进行了多线程消费,这样也会造成消息消费顺序错误。
abbitmq消息顺序错乱第二种情况示意图
保证消息的消费顺序
(1)rabbitmq
①拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;这样也会造成吞吐量下降,可以在消费者内部采用多线程的方式取消费。
一个queue对应一个consumer
②或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理
一个queue对应一个consumer,采用多线程
热门推荐
手动挡可以五档直接降到二档吗
预防急性咽炎从源头抓起,远离6个发病因素,患病后做好5个护理
解决晚上手臂酸痛,提高睡眠质量的方法
项目经理如何画图
常见微生物在常见选择性培养基上的菌落特征
从犯处理是什么
所有人都认为不好的烂板股票,真的没有交易价值吗?
膻中穴位读音解析:从历史渊源到现代应用
消防应急演练与培训指南
肱肌的双重神经支配:你不知道的肌肉控制奥秘
貔貅摆设完全指南:5个要点助你招财进宝
Proxmox VE联动UPS实现自动关机
二战超口径武器的经典之作—德国“铁拳”单兵反坦克发射器
杭州机场推出"10分钟内登机"服务,平均每天助530名旅客顺利成行
C++中的菱形继承与虚拟继承详解
公司法注册资本金账户要求具体有哪些
云南旅游攻略:如何选择合适的交通工具前往各个目的地
AH和KWH之间的换算关系是什么?在电动车领域中这一换算有何实际意义?
如何解读乙肝五项报告?大三阳、小三阳代表什么?
股东权益包括哪些内容?如何保护小股东权益?
南浔古镇:从历史走向现代的蝶变之旅
西装:从英伦走向全球
19世纪时尚:深入探讨服装的演变
假设检验:单/双变量假设检验
国际金价怎么算的-国际金价的形成机制与计算方式
如何设计和建造鸽子窝以满足需求?这种设计方法有哪些创新点?
互质数的概念及其在数学和生活中的重要性解析
车主与投保人不一致
家里放了几年的红茶、绿茶、普洱茶?告诉你答案
八段锦到底有多神?听新华中医专家来详解