如何在完成所有文件的所有进程后在spring集成中创建自动关闭?我的应用程序使用大量文件作为输入并使用http出站网关作为最后一个端点,所以我对每个文件输入都有http出站请求,我尝试使用该端点的最后一个http响应作为关闭的触发器(context.close) ())弹簧整合。我的想法是尝试使用(System.currentTime() - lastTimeGatewayResponse)> = idleTime作为触发器。但我没有办法从该网关获取lastTimeGatewayResponse。
然后我尝试了http://forum.spring.io/forum/spring-projects/integration/116366-orderly-shutdown-how-to-know-when-downstream-executor-is-idle。但是mybe并不是最好的方法,因为我的应用程序在关闭过程中已经关闭了。
任何人都有这方面的经验吗?
由于
答案 0 :(得分:0)
如果您使用的是4.2.x(当前版本是4.2.6),您可以在回复频道上拨打channel.getTimeSinceLastSend()
。
javadocs在几秒钟之内表示,但这不正确,只有几毫秒。
答案 1 :(得分:0)
嗯,实际上lastTimeGatewayResponse
可能完全等同于该网关上timeSinceLastSend
的{{1}}。
因此,您可以为您的http出站网关指定reply-channel
为nullChannel
(output
),并跟踪其reply-channel
以执行关闭逻辑。
另一方面,尝试使用timeSinceLastSend
完成类似但更强大的行为。您可以将<aggregator>
用作所有文件的静态内容,并触发关闭作为correlationKey
的输入操作。发布策略可能是输入文件的计数。