2013.01.17 · 技術と道具

SOS JobSchedulerでのジョブのリトライなどについて

どんどんSOS JobSchedulerの深層に切り込んでいきたいと思います!

今回は、ジョブの実行とは切っても切り離せないリトライなどの挙動についてです。

JobSchedulerでは、ジョブが異常終了した場合(原則は戻り値が0以外)のリトライのことをSetBack(セットバック)と呼びます。

また、一旦サスペンドさせて、後でレジュームすることも可能です。

セットバック

セットバックはジョブのSetBackタブで設定します。

  Set Back Count: 何回目の実行かを指定します。 Is Maximum: YesにするとそのSet Back Countを最後にリトライを終了します。 Delay: そのSet Back Countでのリトライを実行するまでの待ち時間を指定します。 上図の例では、このように動作します。 10:00(Run Timeに沿った通常の実行): 失敗 10:03(1回目のリトライ): 失敗 10:06(2回目のリトライ): 失敗 10:16(3回目のリトライ): 失敗 →最終的にそのジョブは失敗(ジョブチェーンの場合はエラー時のステートに遷移)

ジョブチェーンでのセットバックの有効化

セットバックを指定したジョブがジョブチェーンに組み込まれている場合、そのままではセットバックは動作しません。

上図のように、ジョブチェーンノードのOn Errorで、setbackと指定します。

サスペンドとレジューム

ジョブチェーンノードでのOn Errorの設定には、suspend(サスペンド)もあります。

サスペンドを指定した場合、ジョブの実行が失敗すると、そのジョブチェーンのオーダーはサスペンド状態に入って動作を停止します。(同じジョブチェーンの他のオーダーには影響を与えません。)

このように、JOCで見てみると、サスペンドに入ったことが分かります。

このオーダーの実行を再開(レジューム)する場合もJOCから操作します。

サスペンドに入ったオーダーを右クリックし、コンテキストメニューからResume orderをクリックします。

ジョブのStop On Errorに注意!

JOEでのジョブの設定で、OptionsタブにあるStop On Errorに注意してください。

デフォルトではチェックが入っているのですが、Stop On Errorが有効な場合、ジョブの戻り値が0以外の場合、そこでそのジョブの実行が完全に停止してしまいます。ジョブチェーンに組み込まれている場合、他のオーダーもそのジョブを実行できません。

サスペンドとの違いは下記のとおりです。

suspend: そのオーダーでのみ、そのジョブの実行が停止する(正確には、オーダーの実行が停止する)

Stop On Error: すべてのオーダーで、そのジョブの実行が停止する(ジョブそのものの実行が停止する)

2013/01/17 09:30
← SOS JobSchedulerでのパラメータの受け渡しと日…
SOS JobSchedulerをXMLやPHPから操作する →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。