Spring Integration - http出站网关重试逻辑实现

时间:2013-08-23 18:45:48

标签: spring http integration gateway outbound

我正在连接到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),则该网关应该能够自动重试特定的次数,直到它终于出错了。

我可以获得实施样本供我参考吗?

谢谢!

2 个答案:

答案 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会尝试重新发送消息的尝试恢复通道数。 内部元素是等待时间