如何使用ErrorHandlingDeserializer2在反序列化期间处理异常

时间:2019-10-30 12:59:20

标签: spring-kafka

我正在使用spring-kafka-2.2.7.RELEASE,并试图了解如何配置ErrorHandlingDeserializer2以在反序列化期间处理异常并将其日志记录/发送给DLT。我正在根据以下文档设置用户配置 https://docs.spring.io/spring-kafka/docs/2.2.0.RELEASE/reference/html/_reference.html#error-handling-deserializer

我的问题是,我们如何处理反序列化过程中失败的异常和用户记录?

1 个答案:

答案 0 :(得分:1)

考虑将Apache Kafka $newArray = array(); $arr = array(); foreach($array as $key => $value){ if($key == "file_path"){ $arr[$key] = $value; $newArray[] = $arr; } } 升级到Spring。

这是一位医生如何满足您的要求:https://docs.spring.io/spring-kafka/docs/2.3.0.RELEASE/reference/html/#dead-letters

  

从2.3版开始,与2.3.1结合使用时,发布者(读取为ErrorHandlingDeserializer2)会将死信生产者记录中的记录DeadLetterPublishingRecoverer恢复到无法反序列化的原始值。以前,value()为空,用户代码必须从消息头中解码value()。另外,您可以向发布者提供多个DeserializationException;例如,如果要发布KafkaTemplate中的byte[],以及使用与成功反序列化的记录不同的序列化器的值,则可能需要这样做。这是使用DeserializationException来配置发布者的示例,其中KafkaTemplate使用String和byte []序列化器:

因此,我相信该文档甚至可以为您提供在2.2.x版本中进行操作的线索。

通过这种方式,我们始终建议至少升级到该代的最新版本。当前一个是2.2.10https://spring.io/projects/spring-kafka#learn