首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布无法反序列化到DLT主题的消息。

发布无法反序列化到DLT主题的消息。
EN

Stack Overflow用户
提问于 2020-02-18 15:32:54
回答 1查看 498关注 0票数 2

我不明白不能反序列化的消息是如何用spring写到DLT主题的。

我根据春季卡夫卡博士配置了使用者,这对于消息反序列化后出现的异常非常有效。

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

随后,使用此异常调用SeekToCurrentErrorHandler.handle(Exception thrownException, List<ConsumerRecord<?, ?>> records, ...),但使用一个空的记录列表,因此无法向DLT主题写入某些内容。

如何将这些消息也写入DLT主题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-18 15:53:21

问题是,异常是由Kafka客户端本身抛出的,因此Spring无法看到失败的实际记录。

这就是为什么我们添加了可用于包装实际反序列化器的ErrorHandlingDeserializer2;故障将传递给侦听器容器,并作为DeserializationException重新抛出。

文献资料

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60284409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档