【问题标题】:Spring Kafka Template send with retry based on different casesSpring Kafka 模板根据不同情况发送重试
【发布时间】:2019-08-13 21:33:43
【问题描述】:

我正在使用 Spring Kafka 的 KafkaTemplate 使用异步方式发送消息并使用回调进行正确的错误处理。

另外,我已将 Kafka 生产者配置为重试次数上限 (MAX_INTEGER)。

但是,可能有一些与 avro 序列化有关的错误,但对于那些重试将无济于事。那么如何在不重试的情况下避免这些错误,但对于其他与代理相关的问题我想重试呢?

【问题讨论】:

    标签: apache-kafka spring-kafka


    【解决方案1】:

    序列化异常会在消息发送之前发生,所以retries属性在这种情况下是无关紧要的;它仅适用于实际发送消息时。

    【讨论】:

    • 嗨,我正在检查 Kafka 的 KafkaProducer 文档,而 asyc send 方法确实会抛出 SerializationException。所以这意味着序列化作为发送的一部分发生。我在这里想念什么吗?注意:我使用的是 Kafka avro,需要根据架构注册表检查架构。
    • 是的,它在发送时完成,但由于创建要发送的实际数据失败,实际上没有任何东西发送到代理 - 因此retries 不会启动。该属性就是获取序列化成功后将序列化数据可靠地传递给broker,但是,在这种情况下,由于序列化失败,没有序列化数据。
    • 酷,谢谢。刚刚查看了源代码,只有从RetriableException 扩展的异常可以重试。这种重试行为与反序列化的消费者不同。
    猜你喜欢
    • 2022-10-25
    • 1970-01-01
    • 2020-12-22
    • 2018-08-03
    • 2015-02-26
    • 2021-05-18
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多