[英]Can we have exactly-once-processing with Spring kafka?
我正在嘗試一次性消費 Kafka Consumer。
我的要求是:
我想知道在這種情況下是否可能只有一次?
我知道用例滿足 Kafka 流 API,但我想從 Producer/Consumer API 中了解? 另外,如果假設在處理數據后,消費者由於某種原因失敗(處理應該只進行一次),那么處理這種情況的最佳方法是什么? 這種情況可以有任何延續/檢查點嗎?
我知道 Kafka Streams API 是生產-消費者-生產事務性的。 在這里,如果調用 API 消費者崩潰后,流程會從一開始就開始,對嗎?
是的; Spring for Apache Kafka 以與 Kafka Streams 相同的方式支持僅一次語義。
看
https://docs.spring.io/spring-kafka/docs/current/reference/html/#exactly-once
和
https://docs.spring.io/spring-kafka/docs/current/reference/html/#transactions
請記住,“恰好一次”意味着整個成功
消費 -> 處理 -> 生產
執行一次。 但是,如果produce
步驟失敗(回滾事務),那么consume -> process
部分是“至少一次”。
因此,您需要使process
部分具有冪等性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.