我正在连接到GET REST服务和http出站网关。以下代码片段来自spring integration XML
<http:outbound-gateway request-channel="dispatcherchannel"
http-method="GET"
url="http://ip:port/cacheAPI/Cache/fetch?employeeNumber={employeeNumber}"
reply-channel="outboundreplychannel"
expected-response-type="com.service.Employees">
<http:uri-variable name="empoyeeNumber" expression="payload"/>
</http:outbound-gateway>
我想知道如何在此网关中设置重试机制,以便如果其余服务提供错误的响应代码(如400/500/404),则该网关应该能够自动重试特定的次数,直到它终于出错了。
我可以获得实施样本供我参考吗?
谢谢!
答案 0 :(得分:0)
您可以在回复频道中处理回复。您可以使用服务激活器处理它,解析响应,然后决定是否重试。请记住,在回复频道中,响应是原始邮件,因此您可以轻松地重新发送。
答案 1 :(得分:0)
你认为它已经由Spring处理了,你可以通过
来实现 <int-http:request-handler-advice-chain >
<int:retry-advice max-attempts="5" recovery-channel="channelWantSendMessagTo" >
<int:exponential-back-off initial="1000" multiplier="5.0" maximum="600000" />
</int:retry-advice>
</int-http:request-handler-advice-chain>
我认为参数非常清楚,max会尝试重新发送消息的尝试恢复通道数。 内部元素是等待时间