【发布时间】:2020-03-27 21:58:10
【问题描述】:
我正在尝试将 Spring Integration 用于批处理。某些步骤很耗时,因此如果 QueueChannel 有多个消费者,每个消费者都在单独的线程上运行,这将受益。
这种方法的问题在于,在所有消息都被消耗后,没有干净的方法来关闭应用程序。我曾尝试使用控制总线并关闭任务执行器,但这只有在您能猜到所有消息将在什么时间被消耗并且没有任何消息处于飞行状态时才有效,这是不可能的。
对于批处理是否有一种干净的方法来执行此操作,或者这只是使用 Spring Integration 的错误用例?
编辑:
本质上,如果我有一种方法可以发送一条特殊消息,该消息表示生命周期事件之一,例如启动或停止,它会自动通过所有 Spring 集成组件进行。这样可以保证停止消息到达最后,并且如果有办法在停止消息到达时触发 生命周期 感知 bean 上的 shutdown()。
【问题讨论】:
标签: java spring spring-integration