对于一个项目,我使用带有Kafka的Spring Cloud Stream作为结合剂以及使用Kafka流(KStream)的多个Spring Boot Apps。目标是在Spring Cloud Data Flow中拥有一系列Spring引导应用程序。 我想知道如何最好地管理流中引发的异常,因为未捕获的异常会停止Kafka流和Spring Boot App。我希望将导致异常的消息重定向到死信队列。
如果我用Spring Integration替换Spring Cloud Stream,我就有可用的错误通道的概念,但是Kafka很好地处理了扩展,因此我不确定这是一个好的解决方案。
在Spring Cloud Stream doc中,有一个带有DLQ bean和try / catch异常的示例,该异常使用Kafka Stream的低级Processor API向其发送消息。 我在Kafka Stream中的一个分支上尝试了类似的方法,并向DLQ提供了第二个输出。分离是根据对象的类型进行的,我在catch部分返回了另一个对象。
在不停止Kafka流的情况下处理异常的最佳解决方案是什么?分支解决方案好吗?有关不久的将来新的Kafka / Spring Cloud Stream错误管理的信息吗?
谢谢!