在 Spring Integration 2.2 之前,您可以通过向轮询器的元素添加 AOP 建议来将行为添加到整个集成流中。 但是,假设您只想重试 REST Web 服务调用,而不想重试任何下游终结点。<advice-chain/>Spring中文文档

例如,请考虑以程:Spring中文文档

inbound-adapter->poller->http-gateway1->http-gateway2->jdbc-outbound-adapter

如果在轮询器的建议链中配置了一些重试逻辑,并且由于网络故障而调用失败,则重试会导致两者同时被调用,并且会被第二次调用。 同样,在 jdbc-outbound-adapter 中发生暂时性故障后,将再次调用两个 HTTP 网关,然后再次调用 .http-gateway2http-gateway1http-gateway2jdbc-outbound-adapterSpring中文文档

Spring Integration 2.2 增加了向各个端点添加行为的功能。 这是通过将元素添加到许多端点来实现的。 以下示例演示如何将元素放入:<request-handler-advice-chain/><request-handler-advice-chain/>outbound-gatewaySpring中文文档

<int-http:outbound-gateway id="withAdvice"
    url-expression="'http://localhost/test1'"
    request-channel="requests"
    reply-channel="nextChannel">
    <int-http:request-handler-advice-chain>
        <ref bean="myRetryAdvice" />
    </int-http:request-handler-advice-chain>
</int-http:outbound-gateway>

在这种情况下,仅在本地应用于此网关,不适用于在将回复发送到 后向下游执行的进一步操作。 建议的范围仅限于端点本身。myRetryAdvicenextChannelSpring中文文档

目前,您无法向整个端点提供建议。 架构不允许将 a 作为链本身的子元素。<chain/><request-handler-advice-chain>Spring中文文档

但是,可以将 a 添加到元素中的单个回复生成端点。 一个例外是,在不产生回复的链中,因为链中的最后一个元素是 ,所以不能建议最后一个元素。 如果您需要建议这样的元素,则必须将其移到链之外(链的元素是适配器的元素)。 然后可以像往常一样建议适配器。 对于生成回复的链,可以建议每个子元素。<request-handler-advice-chain><chain>outbound-channel-adapteroutput-channelinput-channelSpring中文文档

目前,您无法向整个端点提供建议。 架构不允许将 a 作为链本身的子元素。<chain/><request-handler-advice-chain>Spring中文文档

但是,可以将 a 添加到元素中的单个回复生成端点。 一个例外是,在不产生回复的链中,因为链中的最后一个元素是 ,所以不能建议最后一个元素。 如果您需要建议这样的元素,则必须将其移到链之外(链的元素是适配器的元素)。 然后可以像往常一样建议适配器。 对于生成回复的链,可以建议每个子元素。<request-handler-advice-chain><chain>outbound-channel-adapteroutput-channelinput-channelSpring中文文档