再試行アクション
停止したJMSキューへのメッセージのエンキューや一意キー制約エラーがあるレコードの挿入などの再試行アクションを使用すると、エラーの原因となったタスクを再試行できます。新規スレッドが各再試行アクションとともに開始されます。したがって、各再試行アクションでは、新規トランザクションが開始されます。表22-1に、再試行アクションに使用可能なオプションを示します。再試行アクションの適用対象は、パラレルのルーティング・ルールのみです。
表22-1 再試行アクションのオプション
オプション | 説明 |
---|---|
再試行数 |
N回再試行します。 |
再試行間隔 |
再試行を秒単位で遅延します。 |
指数関数的バックオフ |
指数バックオフを使用して再試行間隔を増加します。 |
再試行失敗アクション |
N回の再試行に失敗した場合は、このアクションにチェーンします。 |
再試行成功アクション |
再試行に成功した場合は、このアクションにチェーンします。 |
ノート:
指数バックオフでは、次の再試行が2倍のdelayでスケジュールされます。ここでのdelayは、現在の再試行間隔です。たとえば、現在の再試行間隔が2
秒の場合、次の再試行間隔は4
秒にスケジュールされ、その次は8
秒、16
秒と、retryCount
値に達するまで増分されます。
次の例は、再試行アクションの指定方法を示しています。
<Action id="ora-retry"> <retry> <retryCount>3</retryCount> <retryInterval>2</retryInterval> <exponentialBackoff/> <retryFailureAction ref="ora-java"/> <retrySuccessAction ref="ora-java"/> </retry> </Action>
フォルト・ポリシーの再試行間隔に30秒未満の期間を設定すると、指定した間隔内に再試行が実行されない場合があります。これは、org.quartz.scheduler.idleWaitTime
プロパティのデフォルト値が30秒であり、スケジューラがアイドル状態の場合でも、使用可能なトリガーを再試行するまでに30秒待機するためです。再試行間隔を30秒未満の値に設定した場合は、待機時間が発生する可能性があります。
30秒未満の再試行間隔を使用する場合は、fabric-config-core.xml
ファイルのセクション<property name="quartzProperties">
の下に次のプロパティを追加します。
org.quartz.scheduler.idleWaitTime=<value>