簡體   English   中英

Kafka Streams 的 processing.guarantee 設置為 EXACTLY_ONCE 問題

[英]Kafka Streams with processing.guarantee set up to EXACTLY_ONCE issue

我正在開發一個在我的系統上有 3 個(dockerized)kafka 代理的開發環境。 代理將 transaction.state.log.replication.factor 設置為 3。

在流應用程序配置中,我將 processing.guarantee 設置為 EXACTLY_ONCE,在消費者應用程序配置中,我將隔離級別設置為“read_committed”。

我已經在https://docs.confluent.io/current/streams/developer-guide/config-streams.html#processing-guarantee上檢查了其他配置,並根據指南設置了我的環境。

從流應用程序讀取狀態存儲並使用 context.forward(..) 函數生成 100 條消息一分鍾后,消費者應用程序停止讀取,就好像分配的分區上沒有任何提交的消息一樣。

一段時間后,流應用程序崩潰並出現以下錯誤:

“由於致命錯誤 org.apache.kafka.common.errors.ProducerFencedException 導致生產者批次中止:生產者嘗試使用舊時代進行操作。要么有一個具有相同事務 ID 的新生產者,要么生產者的交易已被經紀人過期.”

似乎流生產者無法收到確認並且交易過期。

編輯 1:當我停止流應用程序時,消費者收到提交的消息。

推進Kafka服務器和客戶端版本似乎解決了問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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