Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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流中处理消息时发生错误时重新处理消息_Java_Apache Kafka_Apache Kafka Streams_Spring Kafka - Fatal编程技术网

Java 在Kafka流中处理消息时发生错误时重新处理消息

Java 在Kafka流中处理消息时发生错误时重新处理消息,java,apache-kafka,apache-kafka-streams,spring-kafka,Java,Apache Kafka,Apache Kafka Streams,Spring Kafka,我有一个基于Kafka Streams的简单Spring应用程序,它使用来自传入主题的消息,进行地图转换并打印此消息。KStream的配置如下 @豆子 public KStream Processing PipelineStreams builder、MyTransformer、MyTransformer、, PrintAction PrintAction,字符串topicName{ KStream source=builder.streamtopicName, consumerd.withSe

我有一个基于Kafka Streams的简单Spring应用程序,它使用来自传入主题的消息,进行地图转换并打印此消息。KStream的配置如下

@豆子 public KStream Processing PipelineStreams builder、MyTransformer、MyTransformer、, PrintAction PrintAction,字符串topicName{ KStream source=builder.streamtopicName, consumerd.withSerdes.String,新的JsonSerdeJsonNode.class; //@formatter:off 来源 .mapmyTransformer .外交行动; //@formatter:on 返回源; } 在MyTransformer内部,我正在调用外部微服务,该服务此时可能会关闭。若调用失败(通常引发RuntimeException),我将无法进行转换

这里的问题是,如果在以前的处理过程中发生任何错误,有什么方法可以重新处理Streams应用程序中的消息


根据我目前的研究,这里没有这样做的方法,我唯一的可能性是将消息推入死信主题,并尝试在将来处理它。如果它再次失败,我将其再次推入DLT并以这种方式重试。

如果在Kafka流处理过程中发生任何未捕获的异常,您的流将状态更改为“错误”,并停止使用发生错误的分区的传入消息。 您需要自己捕获异常。可以实现重试:1使用Spring RetryTemplate调用外部微服务,但请记住,在使用特定分区的消息时会有延迟;2按照建议将失败的消息推送到另一个主题中,以便稍后重新处理