从品牌网站建设到网络营销策划,从策略到执行的一站式服务
如何保证RabbitMQ的消息的顺序性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
隆林ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
对于这个问题,我查阅很多网上的资料,大体来说主流的解决方案有两种:
一种是使用单线程消费来保证消息的顺序性
对消息进行编号,消费者处理时根据编号来判断顺序
乍一看,觉得两种方案没有什么问题,但是深入了解下,觉得这两种解决方案并不能完全接保证消息的消费的顺序性问题。
首先我们来分析下,是什么导致RabbitMQ消息的顺序性问题的,常见的有以下几种情形:
消息生产者启用了发送确认机制,在发生超时、中断等,需要RabbitMQ补偿发送时,那么此时消息在源头就已经出现顺序混乱了,导致消息被消费时也是乱序的
另一种情况,如果消息发送时,设置了超时时间,并且采用了死信队列,模拟了延时队列的效果,那么此时消息的顺序也时不能保证的
还有一种情况,如果消息设置了优先级,那么在高并发的情况下,消息的顺序也是得不到保证的,消息的消费顺序也就不能保证了
刚才我们分析了出现消息乱序的几种情况,这里我们首先排除了实用单线程来消费,原因很简单,发送的消息的顺序(源头数据的顺序出现了异常)出现了异常,单线程消费的顺序肯定也是异常的
其次对消息进行编号,这个可以解决消息顺序的问题,但是对加大了对业务处理的复杂性
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图