如何保证消息的顺序性

RabbitMQ

RabbitMQ 消息顺序错乱的场景:数据 1、2、3 按顺序发到一个 queue,多个消费者消费同一个 queue

拆分为多个 queue,每个 queue 由一个 consumer 消费;

或者就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理

Kafka

1 个 topic,3 个 partition,3 个 consumer,每个消费者消费一个 partition,需要保证顺序的消息都放入同一个 partiton,但是如果一个消费者开启多个线程来处理,还是无法保证消息的顺序性。

解决办法:每个消费者内部设置多个内存队列,对消息的 key 做 hash,将需要保证顺序的消息映射到同一个内存队列中,每个线程负责处理一个内存队列

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 面试题 如何保证消息的顺序性? 消息中间件各种面试题:消息中间件面试题:消息丢失怎么办?消息中间件面试题:消息队列...
    jsbintask阅读 25,678评论 8 85
  • 原文出处:https://github.com/doocs/advanced-java/blob/master/d...
    yanglbme阅读 757评论 0 17
  • 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证 ...
    久伴_不离阅读 695评论 0 11
  • 大学刚开学后,在茫茫人海中发现一个男生, 他给人一种清新的感觉。接下来就发生了许多奇妙的缘分。 去食堂吃饭...
    934bbb1d8ed8阅读 342评论 7 4
  • pizza express,我有一个,嗯嗯我尻我尻你的屁股,我抠你的臭pp,oo,ok,啊,其余。我没信用卡哦,t...
    Doremi_dodo阅读 187评论 0 0

友情链接更多精彩内容