アプリケーションスケジュールの管理

Runtime Manager を使用して、実行中のアプリケーションを変更することなく、デプロイされたアプリケーションのフロー内の Scheduler コンポーネントの表示と制御を行うことができます。 たとえば、アプリケーションのうちの 1 つがメンテナンス中である間に、スケジュールされたジョブを無効にすることができます。

[Schedules (スケジュール)]​ タブでは以下を行うことができます。

  • 実行中のアプリケーションでスケジュールを表示する。

  • アプリケーションでスケジュールを変更する。

  • スケジュールを変更せずに、スケジュールされたジョブを直ちに実行する。

  • フローのスケジュールを無効または有効にする。

定期的な間隔でトリガーする​一定間隔​、または指定した Cron 式に基づいた日時にトリガーする ​Cron​ として、Scheduler コンポーネントの種類を設定します。

スケジュールタイプを (一定間隔から Cron、またはその逆に) 変更するには、アプリケーションを更新して再デプロイする必要があります。 デプロイされたアプリケーションのスケジュールタイプを変更することはできません。
この機能を使用するための必要な最小 Mule Runtime Engine バージョンは 4.1.2 以降であり、最小 Runtime Fabric Agent バージョンは 2.0.0 以降です。

スケジュールの設計に関する考慮事項

スケジュールを設計するときには、次の点を考慮してください。

  • Runtime Fabric スケジューラーは、毎回の実行時にジョブ設定を読み取ります。

    スケジューラー設定を更新した場合、次回スケジューラーが実行されるときに変更が有効になります。

  • スケジュールを変更すると、アプリケーションが再デプロイされます。

  • アプリケーションが実行されていないためにスケジュールされたジョブがトリガーされない場合は、アプリケーションが再起動すると、Runtime Fabric はすぐにジョブをトリガーします。

  • スケジュールは、スケジューラーの定義されたタイムゾーンに基づきます。

  • 複数のレプリカがあるアプリケーションの場合、Runtime Fabric はスケジュールされたジョブをすべてのレプリカで実行します。

    [Run (実行)]​ をクリックしてスケジュールされたジョブを直ちに実行する場合、スケジューラーは 1 つのレプリカで実行されます。

    Runtime Fabric は、レプリカ全体に複数の同時スケジューラーを分散します。

  • スクリプトを使用して Runtime Fabric のスケジュールを管理することはできません。

    Runtime Fabric のスケジュールを管理するには、​[Schedules (スケジュール)]​ タブまたは Runtime Fabric API を使用してください。

  • フロー名には、文字、数字、ハイフン (​-​)、アンダースコア (​_​)、ピリオド (​.​) のみを含めることができます。文字 ​/​、​[​、​]​、​{​、​}​、​#​ は無効です。

  • プレースホルダーのあるスケジューラーを使用してスケジュールを作成する場合、スケジュールの作成時に表示される値は、プレースホルダーがいつ検出されるかによって異なります。例:

    • アプリケーションがデプロイされる前に値が使用可能な場合、その値が表示されます。

    • 値がデプロイメントの前に使用可能で、デプロイメントのプロパティに依存する場合、推定値が表示されます。

    • 値がデプロイメント時に提供されるプレースホルダー (​${cronExpression}​ など) である場合、プレースホルダーの正確な値はユーザーインターフェースに表示されません。

    • Runtime Fabric ではデフォルト値の ​60000​ が使用されます。

  • スケジューラーに変更を加えた場合は、アプリケーションを Exchange に再アップロードして、スケジューラーが期待どおりに動作するようにする必要があります。

始める前に

Runtime Manager のスケジュール機能を使用するには、Anypoint Studio 7.13 を使用して 1 つ以上の Scheduler 要素を含むアプリケーションをデプロイします。

Anypoint Studio キャンバスの Scheduler コンポーネント

アプリケーションをデプロイしたら、Runtime Manager でスケジュールを管理できます。 アプリケーションが実行されている必要はありません。

Runtime Manager UI にスケジュールを表示するには、Mule Maven Facade v3 を使用して Maven 経由で Runtime Fabric にデプロイしてください。

Runtime Manager でアプリケーションを表示して管理する

アプリケーションを Runtime Fabric にデプロイしたら、Runtime Manager で Scheduler 要素を表示して管理します。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

    Runtime Manager では、Scheduler 要素がアプリケーションに表示される順序でリストされます。

    「Schedules (スケジュール)」 ページの (1) フロー名と (2) 頻度リンク。
    • [Name (名前)]​ 列には、Scheduler 要素を含むフローの名前 (1) が表示されます。

    • [Schedule (スケジュール)]​ 列の頻度リンク (2) には、要素のスケジュールが表示されます。

  4. ジョブが開始および終了した日時の詳細を確認する場合は、ナビゲーションメニューで ​[Logs (ログ)]​ をクリックします。

    ナビゲーションメニューの [Logs (ログ)] オプション。
  5. 要素の頻度リンクをクリックして、スケジュールエディターを開きます。

    表示されるスケジュールエディターは、スケジュールタイプによって異なります。

  6. スケジュールエディターで、スケジュールを変更するか、または ​[Enabled (有効)]​ チェックボックスをオフにしてスケジュールを無効にします。

  7. [Update (更新)]​ をクリックして設定の変更内容を保存するか、または ​[Cancel (キャンセル)]​ をクリックして保存せずに終了します。

一定間隔スケジュールを変更する

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

    [Schedule (スケジュール)]​ 列には、要素のスケジュールが表示されます。

    一定間隔スケジュールタイプ
  4. 要素の頻度リンクをクリックして、スケジュールエディターを開きます。

  5. スケジュールエディターで、スケジュールを変更するか、または ​[Enabled (有効)]​ チェックボックスをオフにしてスケジュールを無効にします。

    一定間隔スケジュール設定

    頻度には、ミリ秒、秒、分、時間、または日を指定できます。 コール間の最小の推奨頻度は 10 秒です。

  6. [Update (更新)]​ をクリックして設定の変更内容を保存するか、または ​[Cancel (キャンセル)]​ をクリックして保存せずに終了します。

Cron スケジュールを変更する

Cron 式を使用すると、「毎週金曜日の午前 9 時 00 分から午前 10 時 00 分まで 5 分おき」といった複雑なスケジュール頻度を作成できます。

Cron スケジュールタイプの頻度を変更する手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

    [Schedule (スケジュール)]​ 列には、要素のスケジュールが表示されます。

    Cron スケジュールタイプ
  4. 要素の頻度リンクをクリックして、スケジュールエディターを開きます。

  5. スケジュールエディターで、スケジュールを変更するか、または ​[Enabled (有効)]​ (1) チェックボックスをオフにしてスケジュールを無効にします。

    (1) [Enabled (有効)] オプションと (2) [Quick reference (クイックリファレンス)] リンクを含む Cron スケジュール設定
  6. スケジュールエディターで ​[Quick reference (クイックリファレンス)]​ (2) をクリックして、必須項目と許可される値のテーブルを展開するか折りたたみます。

    この例の Cron 式は、10 秒間隔のスケジュールを設定しています。

    Cron トリガーの作成についての詳細は、次の方法で確認できます。

    1. Quartz ドキュメント​を参照します。

    2. バージョンを選択し、​[Documentation (ドキュメント)] > [User’s Guide (ユーザーガイド)] > [Tutorial (チュートリアル)]​ をクリックして、​[CronTrigger]​ レッスンをクリックします。

  7. [Update (更新)]​ をクリックして設定の変更内容を保存するか、または ​[Cancel (キャンセル)]​ をクリックして保存せずに終了します。

スケジュールされたジョブの即時実行

毎晩実行するジョブを今すぐデバッグする場合は、アプリケーションでスケジュールを更新しなくても、実行中のジョブをトリガーできます。実行中のスケジューラーのインスタンス間でジョブをトリガーすると、指定された期間のタイマーがリセットされます。

スケジュールされたジョブを直ちに実行する場合、複数のレプリカがあるアプリケーションの場合でも、スケジューラーは 1 つのレプリカで実行されます。

スケジュールを上書きしてジョブを直ちに実行する手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

  4. 管理する要素を選択してから、​[Run (実行)]​ をクリックします。

Scheduler 要素の無効化または有効化

接続しているアプリケーションがメンテナンス中である間に、スケジュールされたジョブを無効にし、メンテナンスの完了後に再度有効にすることができます。

スケジューラーを再度有効にするまで、Runtime Fabric はスケジュールされたジョブを実行しません。

既知の問題​: スケジューラーを無効にしても、スケジューラーはアプリケーションの起動時に実行されます。スケジューラーが実行されないようにする場合は、Anypoint Studio を使用してアプリケーションで ​startdelay​ プロパティを 5 秒に設定します。

Scheduler 要素を無効にする手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

  4. 管理する要素を選択してから、​[Disable (無効化)]​ をクリックします。

    スケジュールエディターで ​[Enabled (有効)]​ を選択解除または選択して、スケジュールを無効または有効にすることもできます。

    スケジュールエディターので [Enabled (有効)] 切り替え