网关default-reply-timeout无效,仍在等待答复(Spring Integration)

时间:2018-10-05 10:55:40

标签: spring exception timeout spring-integration gateway

我一直在尝试在Spring Integration中使用Gateway的回复超时,但是在下面我一直使用的配置中它不起作用:

    <int:gateway id="TrailerGateway" service-interface="com.12lmdk.gateways.TrailerGateway" 
     default-request-channel="trailerChannel" default-reply-timeout="5000"/>

       <int:channel id="trailerChannel" />

    <int:service-activator input-channel="trailerChannel" 
    ref="trailerService" method="getTrailer"/>

我已经阅读了一个stackoverflow问题,我应该在网关上提供一个回复通道,并在服务激活器中提供一个输出通道,并且该通道应该是可轮询的,所以我也尝试这样做

    <int:gateway id="TrailerGateway" service-interface="com.12lmdk.gateways.TrailerGateway" default-reply-channel="trailerOutputChannel" default-reply-timeout="5000"/>

    <int:channel id="trailerChannel" />
    <int:channel id="trailerOutputChannel" >
       <int:queue/>
    </int:channel>

    <int:service-activator input-channel="trailerChannel" output-channel="trailerOutputChannel" ref="trailerService" method="getTrailer"/>

这仍然不起作用,并且回复超时无效。 (我已经通过将Thread.sleep放置在服务激活程序访问的方法之一中的10秒来对其进行了测试) 网关仍在等待服务激活器的答复,这不是我期望的。

由于超时,如何从网关产生异常或空响应?

1 个答案:

答案 0 :(得分:0)

直到线程返回网关,计时器才会启动。它专门用于当调用线程将工作移交给另一个线程时,例如使用QueueChannelExecutorChannel。当调用线程返回网关时,计时器启动。