繁体   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