温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何保证RabbitMQ的消息的顺序性

发布时间:2021-11-16 16:53:20 来源:亿速云 阅读:694 作者:柒染 栏目:大数据

如何保证RabbitMQ的消息的顺序性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

对于这个问题,我查阅很多网上的资料,大体来说主流的解决方案有两种:

  • 一种是使用单线程消费来保证消息的顺序性

  • 对消息进行编号,消费者处理时根据编号来判断顺序

乍一看,觉得两种方案没有什么问题,但是深入了解下,觉得这两种解决方案并不能完全接保证消息的消费的顺序性问题。

首先我们来分析下,是什么导致RabbitMQ消息的顺序性问题的,常见的有以下几种情形:

  • 消息生产者启用了发送确认机制,在发生超时、中断等,需要RabbitMQ补偿发送时,那么此时消息在源头就已经出现顺序混乱了,导致消息被消费时也是乱序的

  • 另一种情况,如果消息发送时,设置了超时时间,并且采用了死信队列,模拟了延时队列的效果,那么此时消息的顺序也时不能保证的

  • 还有一种情况,如果消息设置了优先级,那么在高并发的情况下,消息的顺序也是得不到保证的,消息的消费顺序也就不能保证了

刚才我们分析了出现消息乱序的几种情况,这里我们首先排除了实用单线程来消费,原因很简单,发送的消息的顺序(源头数据的顺序出现了异常)出现了异常,单线程消费的顺序肯定也是异常的

其次对消息进行编号,这个可以解决消息顺序的问题,但是对加大了对业务处理的复杂性

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI