0

この問題を処理するロジックを適用する方法がわかりません。

私は単純なフローを持っています。フローの間にサービスを消費しています。成功するまで試しましたが、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

提案してください。

4

1 に答える 1

0

最初に、永久に再接続するプロパティを持つ http コネクタを定義できます。

<http:connector name="HttpConnector" >
    <reconnect-forever  frequency="2000"  />
</http:connector>

次に、インバウンドまたはアウトバウンドのエンドポイントに、このようなコネクタ参照を使用させることができます

 <http:inbound-endpoint connector-ref="HttpConnector" .../>

また

<http:outbound-endpoint connector-ref="HttpConnector" .../>

お役に立てれば!

幸運を!

于 2014-12-22T12:38:05.017 に答える