mq如何保證訊息的冪等性

2021-09-24 09:35:35 字數 715 閱讀 2387

一:訊息的傳送流程

二、出現非冪等性的情況

1、生產者已把訊息傳送到mq,在mq給生產者返回ack的時候網路中斷,故生產者未收到確定資訊,生產者認為訊息未傳送成功,但實際情況是,mq已成功接收到了訊息,在網路重連後,生產者會重新傳送剛才的訊息,造成mq接收了重複的訊息

2、消費者在消費mq中的訊息時,mq已把訊息傳送給消費者,消費者在給mq返回ack時網路中斷,故mq未收到確認資訊,該條訊息會重新發給其他的消費者,或者在網路重連後再次傳送給該消費者,但實際上該消費者已成功消費了該條訊息,造成消費者消費了重複的訊息;

三、解決辦法1、mq接收生產者傳來的訊息:

mq內部會為每條訊息生成乙個全域性唯

一、與業務無關的訊息id,當mq接收到訊息時,會先根據該id判斷訊息是否重**送,mq再決定是否接收該訊息。

2、消費者消費mq中的訊息:

也可利用mq的該id來判斷,或者可按自己的規則生成乙個全域性唯一id,每次消費訊息時用該id先判斷該訊息是否已消費過。

MQ訊息冪等

一 緣起 mq訊息必達,架構上有兩個核心設計點 1 訊息落地 2 訊息超時 重傳 確認 再次回顧訊息匯流排核心架構,它由 傳送端 服務端 固化儲存 接收端 四大部分組成。為保證訊息的可達性,超時 重傳 確認機制可能導致訊息匯流排 或者業務方收到重複的訊息,從而對業務產生影響。舉個栗子 購買會員卡,上...

MQ解決訊息重發 做到冪等性

一 mq訊息傳送 1 傳送端mq client 訊息生產者 producer 將訊息傳送給mq server 2 mq server將訊息落地 3 mq server回ack給mq client producer 4 mq server將訊息傳送給訊息接受端mq client 訊息消費者 custo...

MQ解決訊息重發 做到冪等性

一 mq訊息傳送 1 傳送端mq client 訊息生產者 producer 將訊息傳送給mq server 2 mq server將訊息落地 3 mq server回ack給mq client producer 4 mq server將訊息傳送給訊息接受端mq client 訊息消費者 custo...