Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kafka streaming-TimeoutException:自批创建以来,主题:*的*记录已过期_Java_Apache Kafka_Apache Kafka Streams_Kafka Producer Api - Fatal编程技术网

Java Kafka streaming-TimeoutException:自批创建以来,主题:*的*记录已过期

Java Kafka streaming-TimeoutException:自批创建以来,主题:*的*记录已过期,java,apache-kafka,apache-kafka-streams,kafka-producer-api,Java,Apache Kafka,Apache Kafka Streams,Kafka Producer Api,流式处理应用程序在生产环境中推出,10天后在CustomProductionExceptionHandler中观察到属于旧窗口的过期事务的错误/警告 流量: 输入主题-->流媒体应用程序(在日窗口关闭后生成统计数据并发出)-->输出主题 生产者持续尝试将记录发布到输出主题,该主题已在旧窗口中过期,并将错误记录到CustomProductionExceptionHandler中 我减少了批量大小并保留了默认值,但此更改尚未升级到生产 CustomProductionExceptionHandler

流式处理应用程序在生产环境中推出,10天后在CustomProductionExceptionHandler中观察到属于旧窗口的过期事务的错误/警告

流量:

输入主题-->流媒体应用程序(在日窗口关闭后生成统计数据并发出)-->输出主题

生产者持续尝试将记录发布到输出主题,该主题已在旧窗口中过期,并将错误记录到CustomProductionExceptionHandler中

我减少了批量大小并保留了默认值,但此更改尚未升级到生产

CustomProductionExceptionHandler实现:避免由于NewWorkException、TimeOutException而流式处理死亡

使用此实现,生产者不会重试,如果出现任何异常,生产者会继续。。在另一侧返回时失败。。流线程死亡且无法自动重新启动..需要建议

公共类CustomProductionExceptionHandler实现ProductionExceptionHandler{
@凌驾
公共产品异常句柄响应句柄(最终产品记录记录,
最终例外情况(例外情况){
String recordKey=新字符串(record.key());
String recordVal=新字符串(record.value());
字符串recordTopic=record.topic();
logger.error(“Kafka消息虽然失败但标记为已处理。消息:[{}:{}],目标主题:[{}]”,recordKey,recordVal,recordTopic,exception);
返回ProductionExceptionHandlerResponse.CONTINUE;
}
}
例外情况:

2019-12-20 16:31:37.576错误com.jpmc.gpg.exception.CustomProductionExceptionHandler.handle(CustomProductionExceptionHandler.java:19)卡夫卡生产者网络线程| profile-day-summary-generator-291e69b1-5a3d-4d49-8797-252c2ae05607-StreamThread-19-producerid-卡夫卡消息标记为已处理,但失败。消息:[{“统计”:{}],目标主题:[输出主题]

org.apache.kafka.common.errors.TimeoutException:自批创建以来,主题1086149 ms的*记录已过期

试图得到以下问题的答案

1) 为什么生产商试图将较旧的事务发布到已关闭日期窗口的输出主题

示例-生产商试图发送12/09天窗口交易,但当前打开的窗口为12/20

2) 如果没有CustomProductionExceptionHandler--> ProductionExceptionHandlerResponse.CONTINUE。 在NetworkException或TimeoutException发生时,我们是否有任何方法可以让生产商重试 然后继续而不是流线程死? 在中指定ProductionExceptionHandlerResponse.CONTINUE时出现问题 CustomProductionExceptionHandler是-在跳过任何异常的情况下 将该记录发布到输出主题并继续下一个记录。没有弹性。1)在不知道程序的情况下,不可能回答此问题。请注意,一般来说,Kafka Streams在事件时间工作并处理无序数据

2) 您可以配置Kafka Streams应用程序的所有内部使用的客户端(即使用者、生产者、管理客户端和还原使用者)通过在
属性中指定相应的客户端配置
可以传递到
KafkaStreams
。如果要为不同的客户端配置不同的配置,可以相应地为它们添加前缀,即,
producer.retries
而不是
retries
。有关详细信息,请查看文档: