我有一个主类从DB读取记录并传递给spring网关(Spring集成),从那里我将消息拆分为带有队列的多线程应用程序。
My Sping应用程序正在关闭上下文,而弹出集成适配器仍在处理消息。
需要一种机制来仅在处理完所有消息后关闭上下文。
作为临时解决方法,我在while循环中使用thread.sleep来保持程序活着
答案 0 :(得分:0)
好吧,我建议有一个像:
的豆子Semaphore queueSemaphore = new Semaphore(1);
并且acquire()
它位于您的应用程序的开头。最后在关闭应用程序上下文之前执行相同的操作。在这种情况下,当您意识到所有消息都已被处理时,第二个acquire()
将等到应用程序中某处的release()
。
另一个技巧是通过标准System.exit(0)
,您可以看到所有消息都已处理完毕。但在这种情况下,您不应手动关闭应用程序上下文。