spring integration:在处理消息时关闭Context

时间:2018-01-10 17:25:26

标签: spring-integration

我有一个主类从DB读取记录并传递给spring网关(Spring集成),从那里我将消息拆分为带有队列的多线程应用程序。

My Sping应用程序正在关闭上下文,而弹出集成适配器仍在处理消息。

需要一种机制来仅在处理完所有消息后关闭上下文。

作为临时解决方法,我在while循环中使用thread.sleep来保持程序活着

1 个答案:

答案 0 :(得分:0)

好吧,我建议有一个像:

的豆子
Semaphore queueSemaphore = new Semaphore(1);

并且acquire()它位于您的应用程序的开头。最后在关闭应用程序上下文之前执行相同的操作。在这种情况下,当您意识到所有消息都已被处理时,第二个acquire()将等到应用程序中某处的release()

另一个技巧是通过标准System.exit(0),您可以看到所有消息都已处理完毕。但在这种情况下,您不应手动关闭应用程序上下文。