【问题标题】:Kafka Avro serializer, Ignoring serialization exceptionKafka Avro 序列化程序,忽略序列化异常
【发布时间】:2021-03-11 03:25:27
【问题描述】:

我正在使用 kafka-avro-serializer-6.0.0.jar。当我遇到反序列化事件的异常时,我的消费者会停止并且不会移动到下一个事件。这些通常是由生产者的错误引起的,并且是由于使用新的 avro 模式注册服务器出现问题而发生的。

例子:

org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id 58
Caused by: java.lang.ClassCastException:

我可以修复异常,这不是问题。但是要修复消费者,我需要手动将每个偏移量重置为最新的。这在我的场景中很麻烦,而且我有很多消费者群体。

有没有办法让我忽略这些异常并在消费者处移动偏移量?我想是因为我使用的是手动偏移提交,所以我遇到了这个问题。任何人都知道如何配置 kafka-avro-serializer-6.0.0.jar 来做我想做的事?

谢谢。

【问题讨论】:

    标签: apache-kafka kafka-consumer-api avro


    【解决方案1】:

    你主要有两个选择:

    1. 重写反序列化器deserialize 方法并通过捕获ClassCastException 异常并返回null 对象而不是反序列化记录来重新实现它。这些null 对象将在您的消费者代码中处理。
    2. 在您的消费者代码中捕获 SerializationException 异常,并在错误记录偏移后捕获您的消费者 seek。

    Jon Boulineau 在this article 中很好地解释了这两种解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2018-08-11
      • 2020-09-18
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多