如何保证MQ消息的顺序性?

1)RabbitMQ:拆分成多个queue,每个queue对应一个customer;或者就一个queue对应一个customer,但是这个customer内部用内存队列,然后分发给底层不同的worker来处理

 

 

2)Kafka:

生产者写入一个partition中的数据一定是有顺序性的;

生产者在写数据的时候,可以指定一个key,比如说订单系统指定订单id为key,

这个订单相关的数据,一定都会被分发到一个partition中,

而且这个partition中的数据一定是有顺序

 

消费者从partition中取出数据的时候一定是按照顺序的

但是消费者内部并发线程执行从partition中取出的数据导致顺序混乱

解决办法:一个topic,一个partition,一个consumer,内部单线程消费,写N个内存queue,然后N个线程分别消费一个内存queue即可

 

posted on 2022-08-08 20:59  网恋被骗两千八  阅读(606)  评论(0编辑  收藏  举报