簡體   English   中英

我們可以使用 Spring kafka 進行一次性處理嗎?

[英]Can we have exactly-once-processing with Spring kafka?

我正在嘗試一次性消費 Kafka Consumer。
我的要求是:

  1. 從 Topic 讀取數據
  2. 處理數據 [這涉及調用另一個 API]
  3. 將響應寫回 Kafka

我想知道在這種情況下是否可能只有一次?

我知道用例滿足 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM