消息順序寫入queue,如何保證消費結果的順序性。
主要原理只有一個,消息被寫入同一個地方,且消費者同步阻塞的對這個地方進行消費。
下面是對具體消息隊列服務的分析。
## RabbitMQ
* **描述**
對queue順序寫入的多條消息,多個消費者并發消費queue,無法保證消費結果的順序性。
* **方案**
一個consumer對應一個queue,消費者進程同步阻塞 對queue消費
## Kaffa
* **描述**
通過對消息指定key,可以將多條消息寫入同一個partition,一個partition對應一個消費者進程。對于消費者端,為了提高消費速度,使用多線程代替多線程,并發執行消息無法確保消息的順序性。
* **方案**
通過在消費者和多線程之間添加代理,即內存隊列,將消費者中需要順序執行的消息分配到同一內存隊列中。