【问题标题】:How to capture the exception and message key when using ErrorHandlingDeserializer2 to handle exceptions during deserialization反序列化过程中使用ErrorHandlingDeserializer2处理异常时如何捕获异常和消息键
【发布时间】:2020-03-05 20:16:52
【问题描述】:

我正在使用 spring boot 2.1.7.RELEASE 和 spring-kafka 2.2.8.RELEASE。我正在使用 @KafkaListener 注释来创建消费者,并且我正在使用消费者的所有默认设置。而且我'正在使用 Spring-Kafka 文档中指定的以下配置。

// other props
    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ErrorHandlingDeserializer2.class);
    props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, ErrorHandlingDeserializer2.class);
    props.put(ErrorHandlingDeserializer.KEY_DESERIALIZER_CLASS, StringDeserializer.class);
    props.put(ErrorHandlingDeserializer.VALUE_DESERIALIZER_CLASS, AvroDeserializer.class.getName());
    return new DefaultKafkaConsumerFactory<>(props);

现在,我的要求是出现反序列化异常时。请建议我该怎么做。

  1. 捕获异常和记录键以记录详细信息
  2. 将此记录发送到 DLT

【问题讨论】:

    标签: spring-kafka


    【解决方案1】:

    在容器中添加一个SeekToCurrentErrorHandler,配置了DeadLetterPublishingRecoverer

    请参阅 the documentationhere

    反序列化异常被视为致命,不会重试。

    如果您出于某种原因想编写自己的错误处理程序,DeadLetterPublishingRecoverer 中的代码显示了如何提取异常信息。

    【讨论】:

    • 感谢您的回复。我会试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2020-09-18
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    相关资源
    最近更新 更多