如何保證消息的順序性


RabbitMQ

 

  RabbitMQ消息順序錯亂的場景:數據1、2、3按順序發到一個queue,多個消費者消費同一個queue

 

 

  拆分為多個queue,每個queue由一個consumer消費;

  或者就一個queue但是對應一個consumer,然后這個consumer內部用內存隊列做排隊,然后分發給底層不同的worker來處理

 

Kafka

 

  1個topic,3個partition,3個consumer,每個消費者消費一個partition,需要保證順序的消息都放入同一個partiton,但是如果一個消費者開啟多個線程來處理,還是無法保證消息的順序性。

 

 

 

  解決辦法:每個消費者內部設置多個內存隊列,對消息的key做hash,將需要保證順序的消息映射到同一個內存隊列中,每個線程負責處理一個內存隊列

 

轉自:中華石杉Java工程師面試突擊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM