Spring Integration网关线程是否释放


<gateway id="testService" service-interface="org.example.TestService"
         default-request-channel="requestChannel"/>
public interface TestService {
     void placeOrder(Order order);
 }
<int:router input-channel="requestchannel" expression="payload.name">
    <int:mapping value="foo" channel="channel_one" />
    ....
</int:router>
<int:chain input-channel="channel_one" output-channel="channel_default" >
        <int:gateway request-channel="chainC" error-channel="errChannel"/>
    <int:filter expression="headers['Release'] != null" discard-channel="nullChannel"/>
</int:chain>

在这个链中有两条路径-成功路径移动到channel_default,错误路径移动到null通道。

这个网关会导致内存泄漏吗?我怎么检查呢?是否有办法确保为处理网关请求而启动的线程在一段时间后被释放?

如果通道chainC的下游流可能不会返回回复,则需要设置reply-timeout以释放线程,否则该线程将挂起等待永远不会出现的回复。

只要在该子流中没有异步切换,设置reply-timeout="0"是安全的,因为在这种情况下,计时器直到子流完成才启动。

如果chainC总是返回结果或异常,则该配置不存在内存泄漏的可能性。

最新更新