GitHub - fencyio:為RabbitMQ消費者提供冪等性保證的庫包
fency是一個使用SpringBoot和Redis消除RabbitMQ中重複訊息的開源專案。
即使傳送方應用程式僅傳送一次訊息,接收方應用程式也可能不止一次地接收訊息。
冪等元一詞在數學中用於描述一個函式,如果它應用於自身,則產生相同的結果:f(x)= f(f(x))。在訊息處理中,這個概念轉換為:一條訊息無論是一次還是多次接收都會產生相同的效果。這意味著即使接收器接收到相同訊息的重複,傳送者也可以安全地重新傳送訊息而不會引起任何問題。
收件人可以透過跟蹤已收到的訊息來明確地刪除訊息。唯一的訊息識別符號ID可以簡化此任務,並有助於檢測具有相同訊息內容的兩個合法訊息到達的情況。
為了基於訊息識別符號檢測和消除重複訊息,訊息接收者必須保留已經接收的訊息識別符號的列表。
技術實施
為了儲存已處理的訊息後設資料,我們必須處於事務上下文中。如果出現問題,則必須回滾事務。
- MessageInterceptor建立的MessageContext在一個ThreadLocal,並將其儲存
- 所述IdempotencyBarrier是圍繞一個方面@IdempotentConsumer註釋。它檢索MessageContext並檢查訊息是否已存在。唯一訊息金鑰由messageId和consumerQueueName組成。
如果訊息不存在,則呼叫目標方法,並將訊息後設資料儲存在資料儲存中。
如果訊息已存在,則會記錄一條錯誤訊息,並且不會呼叫目標方法。
使用@IdempotentConsumer為您的消費者新增註釋。
請參閱示例應用程式:fency-spring-boot-sample-app
相關文章
- Rabbitmq消費者冪等性(不重複消費)MQ
- MQ系列10:如何保證訊息冪等性消費MQ
- Rabbit MQ 怎麼保證可靠性、冪等性、消費順序?MQ
- 訊息佇列-如何保證訊息的不被重複消費(如何保證訊息消費的冪等性)佇列
- 如何保證介面的冪等性?
- 分散式訊息佇列:如何保證訊息不被重複消費?(訊息佇列消費的冪等性)分散式佇列
- HTTP有哪些保證冪等性和安全性的方法? - mscharhagHTTP
- 騰訊二面:如何保證介面冪等性?高併發下的介面冪等性如何實現?
- 高併發下如何保證介面的冪等性?
- 冪等消費模式 - Pradeep Loganathan模式
- 《RabbitMQ》如何保證訊息不被重複消費MQ
- RabbitMQ多消費者順序性消費訊息實現MQ
- 介面服務中的冪等性設計和防重保證,詳細分析冪等性的幾種實現方法
- 聊聊如何實現一個帶冪等模板的Kafka消費者Kafka
- 關於如何在專案介面保證冪等性的一點思考
- 如何保證介面的冪等性?常見的實現方案有哪些?
- Kafka 如何保證訊息消費的全域性順序性Kafka
- RabbitMQ 冪等性概念及業界主流解決方案MQ
- RabbitMQ使用教程(五)如何保證佇列裡的訊息99.99%被消費?MQ佇列
- SpringBoot如何保證介面的冪等性?六種方案一次講清楚~Spring Boot
- RabbitMQ如何保證訊息的可達性MQ
- 《RabbitMQ》如何保證訊息的可靠性MQ
- 消費端如何保證訊息佇列MQ的有序消費佇列MQ
- 冪等性問題
- 什麼是冪等性?四種介面冪等性方案詳解!
- 消費者權益保護十大典型案例釋出 涉醫美消費等NGK
- Qualtrics XM:消費者如何提供反饋
- Spring Boot 整合 RabbitMQ 訊息事務(消費者)Spring BootMQ
- [java]如何裂解RESTful的冪等性JavaREST
- RabbitMQ 消費端的限流策略MQ
- 如何保證訊息不被重複消費
- 從消費者角度比較Kafka 與 RabbitMQ - OpenCredoKafkaMQ
- RabbitMQ高階之如何保證訊息可靠性?MQ
- 介面冪等性如何實現?
- 分散式之介面冪等性分散式
- 介面冪等性解決方案
- 冪等設計:確保操作的安全與可靠
- 如何透過 SpringBoot+RabbitMQ 保證訊息100%投遞成功並被消費?(附原始碼)Spring BootMQ原始碼