首页 > 解决方案 > 反序列化过程中如何使用ErrorHandlingDeserializer2处理异常

问题描述

我正在使用 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设置我的消费者配置。

这里我的问题是,我们如何获取反序列化过程中失败的异常和消费者记录?

标签: spring-kafka

解决方案


考虑升级到 Spring for Apache Kafka 2.3.1

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

从 2.3 版本开始,当与 an 一起使用时ErrorHandlingDeserializer2,发布者(读作DeadLetterPublishingRecoverer)会将value()死信生产者记录中的记录恢复为未能反序列化的原始值。以前,value()为 null 并且用户代码必须DeserializationException从消息头中解码 。此外,您可以向KafkaTemplate发布者提供多个 s;这可能是需要的,例如,如果您想发布byte[]from aDeserializationException以及使用与成功反序列化的记录不同的序列化程序的值。下面是一个KafkaTemplate使用 String 和 byte[] 序列化程序的 s 配置发布者的示例:

所以,我相信这个文档甚至为您提供了如何在版本中进行的线索2.2.x

顺便说一句,我们总是建议至少升级到这一代的最新版本。目前那个是2.2.10https ://spring.io/projects/spring-kafka#learn


推荐阅读