Flex Gateway新着情報
Governance新着情報
Monitoring API Manager時間ベースの条件に基づいてフローの実行をトリガーします。たとえば Scheduler によって、5 秒ごと、または指定したタイムゾーンで毎日 12 時 00 分にフロー処理をトリガーするメッセージを作成して送信される場合があります。
Scheduler により、固定の頻度、または Cron 式に基づいた間隔でスケジュール戦略が設定されます。
Mule アプリケーションに Scheduler を追加するときは、次の点を考慮してください。
Scheduler は、Mule が動作しているマシンと同じタイムゾーンを使用します。ただし、アプリケーションが CloudHub で動作している場合は、アプリケーションが動作している地理的リージョンに関係なく、Scheduler は UTC タイムゾーンに準拠します。
Scheduler に別のタイムゾーンを設定するには、Cron スケジュール戦略属性の timeZone
を参照してください。
disallowConcurrentExecution
プロパティを使用すると、以前にトリガーされた実行の処理中に Scheduler でフローの実行がトリガーできないようにできます。
スケジュールされたトリガー時に利用できるリソースが 1 つもないために back-pressure が発生した場合、その実行はスキップされます。
Mule Runtime Engine クラスターやマルチワーカー CloudHub デプロイメントでは、Scheduler はプライマリノードのみで (つまり 1 つの Mule インスタンスのみで) 実行されます。
このコンポーネントは、次の XML 構造をサポートします。
<scheduler doc:name="Scheduler" doc:id="snswxf" >
<scheduling-strategy/>
</scheduler>
Scheduler (<scheduler/>
) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
Scheduler (スケジューラー) (デフォルト) |
|
キャンバスに表示されるコンポーネントの編集可能な名前。 |
なし |
|
コンポーネントの自動生成された識別子。 |
Disallow concurrent execution (同時実行を禁止) |
|
この属性を |
スケジュール戦略 (<scheduling-strategy/>
) は Scheduler の子要素です。
子要素 | 説明 |
---|---|
|
|
Scheduler では、次の属性を受け入れる一定間隔 (<fixed-frequency/>
) 要素を受け入れます。
属性名 | 属性 XML | 説明 |
---|---|---|
なし |
|
指定された |
なし |
|
アプリケーションが起動した後で Scheduler の最初の実行を遅延する時間。このプロパティでは頻度と同じ |
なし |
|
|
一定間隔の例を参照してください。
より複雑なスケジューリングの場合、<cron/>
要素で Cron 式を設定します。
属性名 | 属性 XML | 説明 |
---|---|---|
なし |
|
Scheduler をトリガーする Cron 式。デフォルトの Cron 式はありません。式の詳細は、Cron 式を参照してください。例: |
なし |
|
システムプロパティとして渡されるタイムゾーン、またはマシンのオペレーティングシステムで設定されているタイムゾーン。 Java のタイムゾーンの値がサポートされます。Java の短縮表記 ( |
Cron の例を参照してください。
この例では、一定間隔と Cron スケジューリング戦略を設定する方法を示します。
次の例では、Scheduler は 15 秒ごとに実行されます。
<flow name="ex-fixed-frequency-flow" >
<scheduler doc:name="Scheduler">
<scheduling-strategy>
<fixed-frequency frequency="15" timeUnit="SECONDS" />
</scheduling-strategy>
</scheduler>
<!-- One or more processors here. -->
</flow>
次の例では、Scheduler はフローが完了までに要する時間が固定の頻度である 10 ミリ秒を超えると実行をスキップします。
<flow name="scheduler-disallowConcurrentExecution-ex" >
<scheduler doc:name="Scheduler" disallowConcurrentExecution="true" >
<scheduling-strategy>
<fixed-frequency frequency="10" timeUnit="MILLISECONDS"/>
</scheduling-strategy>
</scheduler>
<!-- processors here -->
</flow>
Scheduler が実行をスキップするたびに、たとえば次のような Execution skipped
メッセージがログに記録されます (読みやすいように編集済み)。
INFO 2022-11-09 15:15:43,082 ...
...scheduler.DefaultSchedulerMessageSource:
Flow 'scheduler-disallowConcurrentExecution-ex' is already running and
'disallowConcurrentExecution' is set to 'true'. Execution skipped.
INFO 2022-11-09 15:15:43,083 ...
...scheduler.DefaultSchedulerMessageSource:
Flow 'scheduler-disallowConcurrentExecution-ex' is already running and
'disallowConcurrentExecution' is set to 'true'. Execution skipped.
次の例は、最初の 10 秒の遅延後、10 秒ごとに Scheduler を実行する一定間隔のスケジュール戦略を示しています。
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="10" timeUnit="SECONDS" startDelay="10"/>
</scheduling-strategy>
</scheduler>
次の例では、15 秒ごとにフローが新たに実行され、Mule メッセージの生成がトリガーされる Cron 式を使用します。
<flow name="ex-cron-expression-flow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<cron expression='0/15 * * * * ? '/>
</scheduling-strategy>
</scheduler>
<!-- One or more processors here. -->
</flow>
次の例では、America/Los_Angeles
タイムゾーンで毎日 12 時 00 分にフローをトリガーする Cron 式を使用します。
<flow name="componentsFlow">
<scheduler>
<scheduling-strategy>
<cron expression="0 0 12 * * ?" timeZone="America/Los_Angeles"/>
</scheduling-strategy>
</scheduler>
<logger message="my message"/>
</flow>
Cron は、日時情報を記述するのに広く利用されている標準です。Cron 式 (<cron expression />
スケジュール戦略 (<scheduling-strategy >
) は、固定頻度スケジュール戦略では不可能な間隔でフローをトリガーする場合に便利です。
Scheduler は、毎秒を監視し、Quartz Cron 式が日時の設定と一致すると Mule イベントを作成します。イベントは 1 回だけ、または一定間隔でトリガーできます。
日時の式は、6 つの必須設定と、年の設定 (省略可能) で構成されます。設定は以下の順序で指定します。
秒 (0
-59
)
分 (0
-59
)
時 (0
-23
)
日 (1
-31
)
月 (1
-12
または JAN
-DEC
)
曜日 (1
-7
or SUN
-SAT
)
年 (空白、または 1970
-2099
の範囲内の 4 桁。例: 2019
)
Scheduler は Quartz Cron 式をサポートします。例をいくつか示します。
式 | 動作 |
---|---|
|
毎日 2 秒おきに実行。 |
|
毎日午前 10 時 15 分に実行。 |
|
2019 年の毎日午前 10 時 15 分に実行。 |
|
毎日午後 2 時から 2 時 59 分まで、毎分実行。 |
|
毎日午後 2 時から 2 時 55 分まで、5 分おきに実行。 |
|
毎月 1 日と 7 日の午前 1 時 1 分 1 秒に実行。 |
Scheduler コンポーネントは、Quartz Scheduler の特殊文字もサポートします。
*
: すべての値。
?
: 任意の 1 つの値。
-
: 値の範囲。例: 1-3
。
,
: 追加の値。例: 1,7
。
/
: 増分値。例: 1/7
。
L
: 週または月の最終日、または月の最後の特定の曜日 (例: 6L
は月の最後の土曜日)。
W
: 平日。月または曜日の項目で有効。
#
: 月の "n" 日目。例: #3
は月の 3 日。
次の例は、「hello」というメッセージを毎秒ログに記録します。
<flow name="cronFlow" >
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<cron expression="* * * * * ?" />
</scheduling-strategy>
</scheduler>
<logger level="INFO" doc:name="Logger" message='"hello"'/>
</flow>
Cron 式をビルドするための無料のオンラインツールがたくさんあります。
1 つ以上のプロセッサーが Scheduler に従う必要があります。プロセッサーには、HTTP Request 操作や Transform Message コンポーネントなど、Mule コンポーネントやコネクタ操作が含まれます。プロセッサーを提供しない場合、MuleRuntimeException
が発生し、Mule アプリケーションのデプロイメントが失敗して、次の ERROR メッセージがログに記録されます (読みやすいように編集済み)。
ERROR ...MuleRuntimeException ...
The content of element 'flow' is not complete.
One of '{"http://www.mulesoft.org/schema/mule/core":abstract-message-processor,
"http://www.mulesoft.org/schema/mule/core":abstract-mixed-content-message-processor}'
is expected.