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