我正在使用KafkaMessageDrivenChannelAdapter
来消费来自Kafka主题的消息。这些消息放在一个通道上,由一个线程同步处理。
我希望能够优雅地关闭系统,这意味着不再从主题中消耗消息,并且正在处理的消息应该在关闭之前完成。
我可以在stop()
频道上调用KafkaMessageDrivenChannelAdapter
方法,但我不确定当前正在处理邮件的线程会发生什么。为了研究这种行为,我一直在使用一个只能睡一会儿的虚拟组件来测试如果我将其关闭会发生什么。事实证明,抛出了InterruptedException
,这可能意味着下游处理可能无法正常完成。
正确关闭Kafka通道适配器的正确方法是什么,这可以保证正在处理的邮件能够完成?