消息顺序写入queue,如何保证消费结果的顺序性。
主要原理只有一个,消息被写入同一个地方,且消费者同步阻塞的对这个地方进行消费。
下面是对具体消息队列服务的分析。
## RabbitMQ
* **描述**
对queue顺序写入的多条消息,多个消费者并发消费queue,无法保证消费结果的顺序性。
* **方案**
一个consumer对应一个queue,消费者进程同步阻塞 对queue消费
## Kaffa
* **描述**
通过对消息指定key,可以将多条消息写入同一个partition,一个partition对应一个消费者进程。对于消费者端,为了提高消费速度,使用多线程代替多线程,并发执行消息无法确保消息的顺序性。
* **方案**
通过在消费者和多线程之间添加代理,即内存队列,将消费者中需要顺序执行的消息分配到同一内存队列中。