如果我在Tomcat上发出shutdown命令,它会使用Spring Integration处理所有正在进行的消息吗



我们在工作中讨论了在使用Spring Integration进行处理时关闭tomcat的问题。

我们想知道,默认情况下,Spring(Spring Integration)是否会在对Tomcat表示准备关闭之前处理入站通道上正在进行的所有消息?

我的预感是Spring容器会释放所有可用的资源,包括在它告诉Tomcat它准备关闭之前阻止处理通道上的任何新内容。不过这只是一个想法,我需要好好研究一下。我们是否需要添加一些内容来确保使用Tomcat进行最佳关机?

研究:到目前为止,outbound channel adapter上似乎存在类似"开火并忘记"的东西,因此inbound channels可能也包含同样的东西。

您还可以对springbean使用destroy方法="cleanUp"。在销毁bean之前,您可以从该方法中清理所有资源。

否;当您停止Tomcat时,应用程序上下文会被破坏,Spring Integration没有任何控制权。

我们在2.2中引入了一个新的Orderly Shutdown功能,该功能使用JMX操作,允许停止所有活动组件(轮询器、JMS侦听器容器等),然后等待一段时间等待消息停止。一些端点(如http入站)知道这种状态,不允许新请求进入,同时保持活动状态以处理活动线程。

这不是一个完美的解决方案,但它涵盖了绝大多数用例。

最新更新