エンドポイントへの動作の追加
Spring Integration 2.2 以前は、ポーラーの <advice-chain/>
要素に AOP アドバイスを追加することで、統合フロー全体に動作を追加できました。しかし、ダウンストリームエンドポイントではなく、REST Web サービスの呼び出しだけを再試行する場合を考えます。
例: 次のフローを検討します。
inbound-adapter->poller->http-gateway1->http-gateway2->jdbc-outbound-adapter
ポーラーのアドバイスチェーンに一部の再試行ロジックを構成し、ネットワークグリッチのために http-gateway2
への呼び出しが失敗した場合、再試行により http-gateway1
と http-gateway2
の両方が再度呼び出されます。同様に、jdbc-outbound-adapter で一時的な障害が発生すると、両方の HTTP ゲートウェイがもう一度呼び出されてから、再び jdbc-outbound-adapter
が呼び出されます。
Spring Integration 2.2 は、個々のエンドポイントに動作を追加する機能を追加します。これは、多くのエンドポイントに <request-handler-advice-chain/>
要素を追加することで実現されます。次の例は、outbound-gateway
内の <request-handler-advice-chain/>
要素の使用方法を示しています。
<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
はこのゲートウェイにローカルにのみ適用され、応答が nextChannel
に送信された後にダウンストリームで実行されるその他のアクションには適用されません。アドバイスの範囲はエンドポイント自体に限定されます。
現時点では、 ただし、 |