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

先說結論

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

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

日常思維中,順序大部分情況會和時間關聯起來,即時間的先後表示事件的順序關係。
消息隊列中的若干消息如果是對同一個數據進行操作,這些操作具有前後的關係,必須要按前後的順序執行,否則就會造成數據異常。

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

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

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

如圖

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

簡單的解決方案

RocketMQ 中 使用順序消息

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章