消息重復和消費冪等
更新時間 2023-05-13 17:26:43
最近更新時間: 2023-05-13 17:26:43
分享文章
Kafka 消費的語義是 “at least once”, 也就是至少投遞一次,保證消息不丟,但是不會保證消息不重復。在出現網絡問題、客戶端重啟時均有可能出現少量重復消息,此時應用消費端如果對消息重復比較敏感(比如說訂單交易類),則應該做到消息冪等。
以數據庫類應用為例,常用做法是:
- 發送消息時,傳入 key 作為唯一流水號ID;
- 消費消息時,判斷 key 是否已經消費過,如果已經消費過了,則忽略,如果沒消費過,則消費一次;
當然,如果應用本身對少量消息重復不敏感,則不需要做此類冪等檢查。