この問題を処理するロジックを適用する方法がわかりません。
私は単純なフローを持っています。フローの間にサービスを消費しています。成功するまで試しましたが、Max retries フィールドが必要でした (ただし、再試行回数を制限したくありません)。私のシナリオでは、消費サービスがいつ起動するかわかりませんが、サービスが起動して実行されるまで再試行する必要があります(再試行が使い果たされる必要はありません)。誰でもシナリオを処理することを提案できますか。
<flow name="newFlow1" doc:name="newFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="ttt" doc:name="HTTP"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<logger message="**********test****#[payload]" level="INFO" doc:name="Logger"/>
<until-successful doc:name="Until Successful">
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8089" path="new" method="POST" doc:name="HTTP"/>
</until-successful>
<set-payload value="'Return Response'" doc:name="Set Payload"/>
</flow>
また、'-1' として成功するまで Max Retries を試行しました (無制限の再試行にするため) が、負の値を受け入れていません。HTTP コネクタの接続再試行戦略を使用してみました (ただし、JMS または JDBC では機能するようです)。この問題を処理することを提案してください。前もって感謝します。
編集:
<http:connector name="HttpConnector" doc:name="HTTP-HTTPS">
<reconnect-forever />
</http:connector>
<flow name="new1Flow1" doc:name="new1Flow1">
<http:inbound-endpoint exchange-pattern="request-response" doc:name="HTTP" path="ttt" responseTimeout="30000" host="localhost" port="8081" />
<logger message="***entered***" level="INFO" doc:name="Logger"/>
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8089" path="new" connector-ref="HttpConnector" method="POST" doc:name="HTTP"/>
<logger message="**Http StatusCode***#[message.inboundProperties['http.status']]" level="INFO" doc:name="Logger"/>
</flow>
サービスがダウンしているため、再試行を行っていません。コンソールに次のエラー メッセージが表示されるのは 1 回だけです。
Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=http://localhost:8089/new, connector=HttpConnector
提案してください。