springBoot ConcurrentKafkaListenerContainerFactory如果下游关闭了怎么办?

时间:2019-10-13 12:10:03

标签: spring-boot spring-kafka

我对ConcurrentKafkaListenerContainerFactorysetErrorHandler(org.springframework.kafka.listener.ErrorHandler)感到困惑

能给我一些建议吗?

我必须将Kafka消息传递给外部系统。现在ErrorHandler相当幼稚。如果消息处理程序引发异常,它将向dead-letter-queue发送消息。消息处理程序可能由于两个原因而引发异常:

  • 违反业务支票
  • 外部系统不可用

如果业务检查引发异常,则可以将消息发送到死信队列。

如果外部系统不可用,则将消息发送到死信队列是错误的。我必须实施某种退避,然后重试使用和处理事件,直到外部系统恢复活动。

我想看看这种情况下是否有一些春季收据。 谢谢!

1 个答案:

答案 0 :(得分:0)

使用recent new release (2.3),您可以指定退回以重试交货;您还可以配置可重试的异常。

  
      
  • SeekToCurrentErrorHandler可以配置为将某些异常视为致命异常,从而禁用重试;您现在还可以在两次重新交付尝试之间添加BackOff,以防止交付失败。
  •   

请注意2.3需要Spring Boot 2.2;当前以release candidate的形式提供,并将很快发布。