我一直在尝试在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秒来对其进行了测试) 网关仍在等待服务激活器的答复,这不是我期望的。
由于超时,如何从网关产生异常或空响应?
答案 0 :(得分:0)
直到线程返回网关,计时器才会启动。它专门用于当调用线程将工作移交给另一个线程时,例如使用QueueChannel
或ExecutorChannel
。当调用线程返回网关时,计时器启动。