当前位置:   article > 正文

如何保证消息的顺序性

如何保证消息的顺序性

1.为什么要保证顺序

消息队列中的若干消息如果是对同一个数据进行操作, 这些操作具有前后关系, 必须要按前后的顺序执行, 否则就会造成数据异常.

2.出现顺序错乱的场景

第一种情况:

一个queue, 有多个consumer去消费, 这样就会造成顺序的错误, consumer从MQ里面读取数据是有序的, 但是每个consumer的执行时间是不固定的, 无法保证先读到消息的consumer一定先完成操作, 这样就会出现消息并没有按照顺序执行, 造成数据顺序错误.

第二种情况:

一个queue对应一个consumer, 但是consumer里面进行了多线程消费, 这样也会造成消息消费顺序错误.

3.如何保证消息的消费顺序

第一种方案:

拆分多个queue, 每一个queue一个consumer, 就是多一些queue而已, 确实是麻烦点; 这样也会造成吞吐量下降, 可以在消费者内部采用多线程的方式去消费.

 

第二种方案:

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/826297
推荐阅读
相关标签
  

闽ICP备14008679号