对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

为端点添加行为

在 Spring Integration 2.2 之前,你可以通过在轮询器中添加 AOP Advice 来为整个集成流程添加行为<建议链/>元素。 不过,假设你只想重试一次REST Web服务调用,而不是任何下游端点。spring-doc.cadn.net.cn

例如,考虑以:spring-doc.cadn.net.cn

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

如果你在轮询器上配置一些重试逻辑,并调用HTTP-gateway2由于网络故障失败,重试会导致HTTP-gateway1HTTP-gateway2第二次被叫来。 同样,在 jdbc 出站适配器发生瞬态故障后,两个 HTTP 网关都会被调用一次,然后再次调用JDBC-出站适配器.spring-doc.cadn.net.cn

Spring Integration 2.2 增加了对单个端点添加行为的能力。 这是通过添加<请求-处理者-建议链/>元素映射到多个端点。 以下示例展示了如何<请求-处理者-建议链/>元素在出站网关:spring-doc.cadn.net.cn

<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>

在这种情况下,myRetryAdvice仅适用于该网关的本地作,不适用于回复发送后下游的后续作下一个频道. 建议范围仅限于终点本身。spring-doc.cadn.net.cn

目前,你无法对整个人提供建议<链/>终点。 该模式不允许<请求-处理-建议链>作为链本身的一个子元素。spring-doc.cadn.net.cn

然而,<请求-处理-建议链>可以添加到<链>元素。 一个例外是,在链中不产生任何回复,因为链中的最后一个元素是出站通道适配器,最后一个元素不可推荐。 如果你需要建议这样的元件,它必须被移出链条(通过输出通道链条为输入通道适配器的)。 然后可以像往常一样建议适配器。 对于产生响应的链,可以建议每个子元素。spring-doc.cadn.net.cn