冪等性問題:
1、生產者已把訊息傳送到mq,在mq給生產者返回ack的時候網路中斷,故生產者未收到確定資訊,生產者認為訊息未傳送成功,但實際情況是,mq已成功接收到了訊息,在網路重連後,生產者會重新傳送剛才的訊息,造成mq接收了重複的訊息
2、消費者在消費mq中的訊息時,mq已把訊息傳送給消費者,消費者在給mq返回ack時網路中斷,故mq未收到確認資訊,該條訊息會重新發給其他的消費者,或者在網路重連後再次傳送給該消費者,但實際上該消費者已成功消費了該條訊息,造成消費者消費了重複的訊息;
根據專案中實際應用解決:
主要思想:為每一天mq訊息生成乙個唯一的id標識,傳送訊息時根據id判斷生產者是否傳送給該訊息,同理消費者消費時,根據id## 標題判斷是否消費過該條訊息。
例子:
生產者:根據使用者號和商品號判斷佇列裡是否有重複的訂單
消費者:取出來的訂單在進行一次判斷,是否有消費過該訊息。
MQ訊息冪等
一 緣起 mq訊息必達,架構上有兩個核心設計點 1 訊息落地 2 訊息超時 重傳 確認 再次回顧訊息匯流排核心架構,它由 傳送端 服務端 固化儲存 接收端 四大部分組成。為保證訊息的可達性,超時 重傳 確認機制可能導致訊息匯流排 或者業務方收到重複的訊息,從而對業務產生影響。舉個栗子 購買會員卡,上...
RabbitMQ 訊息冪等性問題
關於mq消費者的冪等性問題,在於mq的重試機制,因為網路原因或客戶端延遲消費導致重複消費。使用mq重試機制需要注意的事項以及如何解決消費者冪等性問題以下將逐一講解。1.rabbitmq自動重試機制 消費者在消費訊息的時候,如果消費者業務邏輯出現程式異常,這個時候我們如何處理?使用重試機制,rabbi...
RocketMQ解決冪等性問題
一.造成重複消費的原因 在於回饋機制。正常情況下,消費者在消費訊息時候,消費完畢後,會傳送乙個ack確認資訊給訊息佇列 broker 訊息佇列 broker 就知道該訊息被消費了,就會將該訊息從訊息佇列中刪除。不同的訊息佇列傳送的確認資訊形式不同,例如rabbitmq是傳送乙個ack確認訊息,roc...