Harji
Harji

Reputation: 85

Spring integration Automatic Shutdown

How to create automatic shutdown in spring integration after finish all process for all file? My application use a lot of file as input and use http outbound gateway as last endpoint, so i have http outbound request for each file input , and i try to use the last http response from that endpoint as the trigger to shutdown (context.close()) the spring integration. My idea is try to use (System.currentTime()-lastTimeGatewayResponse)>= idleTime as trigger . But i did not find way to get lastTimeGatewayResponse from that gateway.

And afterward I try to folow http://forum.spring.io/forum/spring-projects/integration/116366-orderly-shutdown-how-to-know-when-downstream-executor-is-idle. But mybe that not the best aproach, because my application has shutdown while the the process unfinish.

Anyone has experience about that?

Thanks

Upvotes: 1

Views: 577

Answers (2)

Artem Bilan
Artem Bilan

Reputation: 121550

Well, actually the lastTimeGatewayResponse may be fully equivalent to the timeSinceLastSend from the reply-channel on that gateway.

So, you can specify nullChannel as an output (reply-channel) for your http outbound gateway and track its timeSinceLastSend to perform your shutdown logic.

On the other hand, try to accomplish similar, but more robust behavior, with an <aggregator>. You can use correlationKey as something static for all your files and trigger shutdown as an input action from the <aggregator>. The release strategy may be the count of your input files.

Upvotes: 0

Gary Russell
Gary Russell

Reputation: 174769

If you are using 4.2.x (current version is 4.2.6) you can call channel.getTimeSinceLastSend() on the reply channel.

The javadocs says it's in seconds but that's not correct, it's milliseconds.

Upvotes: 0

Related Questions