Until Successful スコープ

Until Successful スコープは、内部のコンポーネントが成功するか、または最大再試行回数に達するまで、内部のコンポーネントを順番に処理します。Async 以外のすべてのコアコンポーネントと同様に、Until Successful は同期的に実行されます。スコープ内のコンポーネントが接続に失敗したり、正常に結果を生成できなかったりした場合、Until Successful は設定されている最大再試行回数まで、失敗したコンポーネントをやり直します。再試行が成功すると、スコープは次のコンポーネントに進みます。最後の再試行に失敗すると、Until Successful はエラーをスローします。

Until Successful を使用する一般的な処理は次の通りです。

  • アウトバウンドエンドポイントへのディスパッチ (可用性に問題があるかも知れないリモート Web サービスを呼び出す場合など)

  • コンポーネントメソッドの実行 (信頼性の低いリソースに依存する Spring bean を実行する場合など)

  • サブフローを使用した、いくつかのアクションが成功するまでの再試行

Until Successful スコープには、下表に示す項目があります。

属性 説明

Max Retries (最大再試行回数) (maxRetries)

再試行の最大回数を指定します。最大回数に達すると、Message: 'until-successful' retries exhausted. のようなエラーメッセージが出力されます。Mule エラー種別は MULE:RETRY_EXHAUSTED です。

Milliseconds Between Retries (再試行回数間のミリ秒数) (millisBetweenRetries)

再試行から次の再試行を実行するまでの間隔をミリ秒で指定します。実際の間隔は前回の実行によって変わりますが、この数値の 2 倍を超えてはいけません。デフォルト値は 60000 ミリ秒 (1 分) です。

次の XML 例は、毎秒の再試行を最大 5 回 (デフォルト) まで行います。この例では、内容を見やすくするために doc:id 属性は削除されています。

<flow name="untilsuccessfulFlow">
  <scheduler doc:name="Scheduler" >
    <scheduling-strategy >
      <fixed-frequency frequency="30" timeUnit="SECONDS"/>
    </scheduling-strategy>
  </scheduler>
  <until-successful maxRetries="5" doc:name="Until Successful">
    <!-- One or more processors here -->
    <http:request method="GET" doc:name="Request"
      config-ref="HTTP_Request_configuration"
      url="https://jsonplaceholder.typicode.com/users"/>
  </until-successful>
  <logger level="INFO" doc:name="Logger" />
</flow>

Was this article helpful?

💙 Thanks for your feedback!