Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Apache kafka 将无法反序列化的消息发布到DLT主题_Apache Kafka_Spring Kafka - Fatal编程技术网

Apache kafka 将无法反序列化的消息发布到DLT主题

Apache kafka 将无法反序列化的消息发布到DLT主题,apache-kafka,spring-kafka,Apache Kafka,Spring Kafka,我不明白如何使用SpringKafka将无法反序列化的消息写入DLT主题 我根据配置了使用者,这对于消息反序列化后发生的异常非常有效 但是当消息不可反序列化时,轮询消息时会抛出org.apache.kafka.common.errors.SerializationException 随后,SeekToCurrentErrorHandler.handle(Exception thrownException,List问题在于异常是由Kafka客户端本身引发的,因此Spring无法看到失败的实际记录

我不明白如何使用SpringKafka将无法反序列化的消息写入DLT主题

我根据配置了使用者,这对于消息反序列化后发生的异常非常有效

但是当消息不可反序列化时,轮询消息时会抛出
org.apache.kafka.common.errors.SerializationException


随后,
SeekToCurrentErrorHandler.handle(Exception thrownException,List问题在于异常是由Kafka客户端本身引发的,因此Spring无法看到失败的实际记录

这就是为什么我们添加了
ErrorHandlingDeserializer2
,它可以用来包装实际的反序列化程序;失败被传递到侦听器容器,并作为
反序列化异常重新抛出

当反序列化程序无法反序列化消息时,Spring无法处理此问题,因为它发生在poll()返回之前。为了解决此问题,版本2.2引入了ErrorHandlingDeserializer2。此反序列化程序委托给真正的反序列化程序(键或值)。如果委托未能反序列化记录内容,ErrorHandlingDeserializer2将在包含原因和原始字节的标头中返回空值和反序列化异常。使用记录级MessageListener时,如果ConsumerRecord包含键或值的反序列化异常标头,则容器使用失败的ConsumerRecord调用的ErrorHandler。该记录不会传递给侦听器

DeadLetterPublishingRecoverer
具有检测异常并发布失败记录的逻辑