我有一个以Avro种格式发送消息的制作人和一个收听这些消息的消费者.
我还通过在消费者中使用@RetryableTopic
来处理错误,实现了非阻塞重试.
当消费者无法反序列化消息时(由于模式更改或其他原因),它不会将该消息放入-retry
主题中.它直接将其发送到-dlt
主题.
我还想重审DeserializationException
次.原因是,在重试这些错误时,我可以在消费者中部署修复程序,以便重试最终能够成功.
我在@RetryableTopic
年try 了include
个选项,但在DeserializationException
年似乎不起作用.
@RetryableTopic(
attempts = "${app.consumer.retry.topic.count:5}",
backoff = @Backoff(delayExpression = "${app.consumer.retry.topic.back-off:2000}"),
fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC,
include = {DeserializationException.class} // does not work
)
这是@RetryableTopic
中的一个bug还是有其他方法可以实现这一点?