Java Kafka StreamsException TimeoutException:正在过期的N条记录正在物化KTable
我的streams应用程序只是从一个记录主题具体化一个KTable。主题中有10万条记录,没有问题。但是,主题中有1500万条记录,一旦我们在中获得数百万条记录,实例将崩溃,出现以下异常: 线程“companys-de1f21f9-b445-449e-a59b-5e0cecfa54d1-StreamThread-1”org.apache.kafka.streams.errors.StreamsException中的异常:任务[0_0]由于先前记录(时间戳1601327726515)捕获错误而中止发送由于org.apache.kafka.common.errors.TimeoutException,主题为companys-companys.read-changelog:公司40条记录过期。自批创建以来,read-changelog-0:120001毫秒已过期] 提供了我们正在运行的服务的详细示例 令我不解的是,使我的streams应用程序崩溃的错误(如下)是引用了一个过载的生产者,然而,这个服务只是实现了一个KTableJava Kafka StreamsException TimeoutException:正在过期的N条记录正在物化KTable,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我的streams应用程序只是从一个记录主题具体化一个KTable。主题中有10万条记录,没有问题。但是,主题中有1500万条记录,一旦我们在中获得数百万条记录,实例将崩溃,出现以下异常: 线程“companys-de1f21f9-b445-449e-a59b-5e0cecfa54d1-StreamThread-1”org.apache.kafka.streams.errors.StreamsException中的异常:任务[0_0]由于先前记录(时间戳1601327726515)捕获错误而中止
streamsBuilder
.stream(出口主题,已消费.with(Serdes.String(),companySerde))
.toTable(具体化的.as(companyKTableName)
.withKeySerde(Serdes.String())
.具有ValueSerde(公司订单));
属性我已经在尝试使其名义上运行时进行了调整:
10000batch.size
1000linger.ms
300000request.timeout.ms
300000max.block.ms
1000retry.backoff.ms
3replication.factor
KTable
也是写入相应的变更日志主题
如果输入主题配置了日志压缩,则可以将程序重写为
streamsBuilder.table(
出口话题,
具体化的.as(CompanyTableName)
.withKeySerde(Serdes.String())
.带ValueSerde(公司订单)
);
此外,您还可以启用
topology.optimization=“all”
:在这种情况下,输入主题将被重新用作变更日志以恢复状态,并且不会创建其他变更日志主题。Hiya Matthias,谢谢!KTable没有进入我们的最终实现,但我会密切关注一个机会来证实这一点。