Spring integration 如何优雅地关闭卡夫卡通道适配器?

Spring integration 如何优雅地关闭卡夫卡通道适配器?,spring-integration,spring-kafka,Spring Integration,Spring Kafka,我正在使用一个Kafka消息驱动程序channeladapter来使用来自Kafka主题的消息。这些消息放在一个通道上,由一个线程同步处理 我希望能够优雅地关闭系统,这意味着不再使用来自主题的消息,正在处理的消息应该在关闭之前完成 我可以在通道KafkaMessageDrivenChannelAdapter上调用stop()方法,但我不确定当前可能正在处理消息的线程会发生什么情况。为了研究这种行为,我一直在使用一个虚拟组件,它只是休眠一段时间,来测试如果我关闭它会发生什么。结果是抛出了一个Int

我正在使用一个
Kafka消息驱动程序channeladapter
来使用来自Kafka主题的消息。这些消息放在一个通道上,由一个线程同步处理

我希望能够优雅地关闭系统,这意味着不再使用来自主题的消息,正在处理的消息应该在关闭之前完成

我可以在通道
KafkaMessageDrivenChannelAdapter
上调用
stop()
方法,但我不确定当前可能正在处理消息的线程会发生什么情况。为了研究这种行为,我一直在使用一个虚拟组件,它只是休眠一段时间,来测试如果我关闭它会发生什么。结果是抛出了一个
InterruptedException
,这可能意味着下游处理可能无法正常完成


如何正确地关闭Kafka通道适配器,以保证处理中的消息能够完成?

这类问题假设我们需要一些测试用例或Spring Boot应用程序。OTOH,分享,请分享StackTrace。查看
KafkaMessageDrivenChannelAdapter
代码,我看不到什么会中断线程。它只是在(this.active){时从
正常存在,但是您能确认调用
stop()吗
旨在优雅地关闭适配器,其特点与我描述的相同?这就是它的意图。在您确认相反的情况之前,一切正常。我认为@ArtemBilan假定您使用的是2.x;使用0.8.x.x kafka客户端的旧1.x版本可能会有不同的工作方式。