我对ConcurrentKafkaListenerContainerFactory
和setErrorHandler(org.springframework.kafka.listener.ErrorHandler)
感到困惑
能给我一些建议吗?
我必须将Kafka消息传递给外部系统。现在ErrorHandler
相当幼稚。如果消息处理程序引发异常,它将向dead-letter-queue
发送消息。消息处理程序可能由于两个原因而引发异常:
如果业务检查引发异常,则可以将消息发送到死信队列。
如果外部系统不可用,则将消息发送到死信队列是错误的。我必须实施某种退避,然后重试使用和处理事件,直到外部系统恢复活动。
我想看看这种情况下是否有一些春季收据。 谢谢!
答案 0 :(得分:0)
使用recent new release (2.3),您可以指定退回以重试交货;您还可以配置可重试的异常。
SeekToCurrentErrorHandler
可以配置为将某些异常视为致命异常,从而禁用重试;您现在还可以在两次重新交付尝试之间添加BackOff
,以防止交付失败。
请注意2.3需要Spring Boot 2.2;当前以release candidate的形式提供,并将很快发布。