RocketMQ的Consumer详解之重复消息的解决方案
生活随笔
收集整理的這篇文章主要介紹了
RocketMQ的Consumer详解之重复消息的解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
重復消息的解決方案
造成消息重復的根本原因是:網絡不可達。只要通過網絡交換數據,就無法避免這個問題。所以解決這個問題的辦法就是繞過這個問題。那么問題就變成了:如果消費端收到兩條一樣的消息,應該怎樣處理?
1. 消費端處理消息的業務邏輯保持冪等性
2. 保證每條消息都有唯一編號且保證消息處理成功與去重表的日志同時出現
第1條很好理解,只要保持冪等性,不管來多少條重復消息,最后處理的結果都一樣。第2條原理就是利用一張日志表來記錄已經處理成功的消息的ID,如果新到的消息ID已經在日志表中,那么就不再處理這條消息。
第1條解決方案,很明顯應該在消費端實現,不屬于消息系統要實現的功能。第2條可以消息系統實現,也可以業務端實現。正常情況下出現重復消息的概率其實很小,如果由消息系統來實現的話,肯定會對消息系統的吞吐量和高可用有影響,所以最好還是由業務端自己處理消息重復的問題,這也是RocketMQ不解決消息重復的問題的原因。
RocketMQ不保證消息不重復,如果你的業務需要保證嚴格的不重復消息,需要你自己在業務端去重。
總結
以上是生活随笔為你收集整理的RocketMQ的Consumer详解之重复消息的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMQ的Consumer详解之
- 下一篇: RocketMQ的存储之消息的存储分析