MQ中保證訊息不被重複消費解決方案

2021-10-05 10:26:58 字數 355 閱讀 5353

在網路延遲傳輸中,會造成進行mq的訊息重試,在重試的過程中,可能會引用訊息的重發消費

在客戶端**中,由於程式設計師大意,訊息沒有簽收,或者事務沒有提交等,都會有可能造成重發消費

方案一:

如果訊息是做資料庫的插入操作,那個給這個訊息做個唯一主鍵,那麼就散出現重複消費的情況,就會導致主鍵衝突,避免資料庫出現髒資料。

方案二(推薦)

準備乙個第三方服務來做訊息記錄,比如redis,給訊息分配乙個全域性唯一的id,只要消費過該訊息,將訊息以 k-v的形式存入redis,那麼在消費者消費之前,去redis去查詢該訊息是否有消費記錄,有消費記錄,那麼就不消費該訊息。

如何保證訊息不被重複消費

如何保證訊息不被重複消費啊 如何保證訊息消費時的冪等性 首先就是比如rabbitmq rocketmq kafka,都有可能會出現消費重複消費的問題,正常。因為這問題通常不是mq自己保證的,是給你保證的。然後我們挑乙個kafka來舉個例子,說說怎麼重複消費吧。kafka實際上有個offset的概念,...

如何保證訊息不被重複消費?

如何保證訊息不被重複消費?或者說,如何保證訊息消費的冪等性?其實這是很常見的乙個問題,這倆問題基本可以連起來問。既然是消費訊息,那肯定要考慮會不會重複消費?能不能避免重複消費?或者重複消費了也別造成系統異常可以嗎?這個是 mq 領域的基本問題,其實本質上還是問你使用訊息佇列如何保證冪等性,這個是你架...

佇列訊息重複消費解決

其實這個很常見的乙個問題,這倆問題基本可以連起來問。既然是消費訊息,那肯定要考慮考慮會不會重複消費?能不能避免重複消費?或者重複消費了也別造成系統異常可以嗎?這個是mq領域的基本問題,其實本質上還是問你使用訊息佇列如何保證冪等性,這個是你架構裡要考慮的乙個問題。要考慮的實際生產上的系統設計問題。首先...