如何保证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即可