【发布时间】:2019-08-13 21:33:43
【问题描述】:
我正在使用 Spring Kafka 的 KafkaTemplate 使用异步方式发送消息并使用回调进行正确的错误处理。
另外,我已将 Kafka 生产者配置为重试次数上限 (MAX_INTEGER)。
但是,可能有一些与 avro 序列化有关的错误,但对于那些重试将无济于事。那么如何在不重试的情况下避免这些错误,但对于其他与代理相关的问题我想重试呢?
【问题讨论】:
我正在使用 Spring Kafka 的 KafkaTemplate 使用异步方式发送消息并使用回调进行正确的错误处理。
另外,我已将 Kafka 生产者配置为重试次数上限 (MAX_INTEGER)。
但是,可能有一些与 avro 序列化有关的错误,但对于那些重试将无济于事。那么如何在不重试的情况下避免这些错误,但对于其他与代理相关的问题我想重试呢?
【问题讨论】:
序列化异常会在消息发送之前发生,所以retries属性在这种情况下是无关紧要的;它仅适用于实际发送消息时。
【讨论】:
KafkaProducer 文档,而 asyc send 方法确实会抛出 SerializationException。所以这意味着序列化作为发送的一部分发生。我在这里想念什么吗?注意:我使用的是 Kafka avro,需要根据架构注册表检查架构。
retries 不会启动。该属性就是获取序列化成功后将序列化数据可靠地传递给broker,但是,在这种情况下,由于序列化失败,没有序列化数据。
RetriableException 扩展的异常可以重试。这种重试行为与反序列化的消费者不同。