天天看點

mq中如何保證消息的順序性

先說結論

不建議在mq當中使用消息的投遞順序來保證消息的順序一緻性

反思為什麼需要保留消息的順序性

日常思維中,順序大部分情況會和時間關聯起來,即時間的先後表示事件的順序關系。

消息隊列中的若幹消息如果是對同一個資料進行操作,這些操作具有前後的關系,必須要按前後的順序執行,否則就會造成資料異常。

其實保證是最終結果的一緻性

什麼情況下會出現消息錯亂

同一個消息,有多個消費者,消費時長不同,導緻第一個消息未處理完成,第二個已經處理完成了

如圖

mq中如何保證消息的順序性

不同的中間件出現亂序的原因不同

簡單的解決方案

RocketMQ 中 使用順序消息

可以考慮用狀态機,對于一些狀态順序類的 可以通過狀态機進行判斷,判斷失敗的先延時+nack拒絕消費,等待其他消息

  • 關注公衆号 [龗孖] 或搜尋公衆号[lingmaW] , 獲得更多新幹貨!!!