訊息佇列訊息順序性

2022-09-04 19:39:08 字數 606 閱讀 9806

原本資料應該是資料1、資料2、資料3的順序儲存到庫里,但是消費者對資料2操作優先了。導致訊息的資料錯亂儲存入庫

如果存在多個消費者,那麼每個消費者分別乙個queue ,這樣每個消費者消費的queue裡就有順序了

1個partition 對應乙個消費者,那麼消費者中開多個執行緒去消費資料,那麼就會出現訊息錯亂

(4個消費者,3個partition的話,那麼肯定有乙個消費者是沒消費的)

消費者如果使用單執行緒去消費訊息,那麼1秒鐘的處理請求大概幾十條左右,吞吐量不高, 還是需要多執行緒來消費的話,就需要在接收後進行增加記憶體佇列,通過某個執行緒去處理一連串的資料,達到順序性

如何保證訊息佇列訊息的順序性

舉個例子 有乙個mysql binlog 同步系統,壓力是非常大的,日同步資料達到了上億級別,就是將資料從乙個 mysql 庫當中原封不動的同步到另乙個 mysql 庫當中去 比較常見的就是大資料組需要幹的事情 假設在 mysql 當中增刪改了一條資料,對應的生產了三條 增刪改的 binlog 日誌...

Kafka 訊息佇列如何保證順序性?

主要思路 相同key值的訊息寫入同乙個partition partition內的訊息是有序的 乙個partition的訊息只會被乙個消費者消費。如果乙個消費者是多個執行緒消費,則需要把pull來的訊息按照key值寫入不同的記憶體佇列中,相同key值的訊息寫入同乙個記憶體佇列 記憶體佇列內的訊息是有序...

訊息佇列 訊息佇列

輪詢排程 一次性分發所有訊息,保證訊息平均分配,不管消費者是否能正常消費 訊息應答 保證消費端能確實消費,不丟失 公平 乙個乙個分發所有訊息,在保證分發到的執行緒確認回覆後,才分發下個訊息給下個空閒的消費者,訊息持久化 保證佇列中的訊息不丟失,包括3要素 交換器 訊息佇列 訊息都必須宣告持久化 發布...