第130章 Quartz2


Quartz2 Component

Camel 2.12.0 から利用可能
quartz2: コンポーネントは、Quartz スケジューラー 2.x を使用してスケジュールされたメッセージの配信を提供します。各エンドポイントは、異なるタイマー(Quartz 用語、Trigger および JobDetail)を表します。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-quartz2</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap
注記: Quartz 2.x API は Quartz 1.x と互換性がありません。古い Quartz 1.x をそのまま使用する必要がある場合は、代わりに古い Quartz コンポーネントを使用してください。

Camel on EAP デプロイメント

このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください

URI 形式

quartz2://timerName?options
quartz2://groupName/timerName?options
quartz2://groupName/timerName?cron=expression
quartz2://timerName?cron=expression
Copy to Clipboard Toggle word wrap
コンポーネントは CronTrigger または SimpleTrigger のいずれかを使用します。cron 式が指定されていない場合、コンポーネントは単純なトリガーを使用します。groupName が指定されていない場合、quartz コンポーネントは Camel グループ名を使用します。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

オプション

Expand
パラメーター デフォルト 説明
cron なし cron 式を指定します( trigger.\* または job.\* オプションと互換性がありません)。
trigger.repeatCount 0 SimpleTrigger: タイマーを繰り返す回数はどれくらいですか ?
trigger.repeatInterval 1000 SimpleTrigger: 繰り返されるトリガーの間隔(ミリ秒単位)。この間隔を使用して簡単なトリガーを使用するには、trigger.repeatCount を有効にする必要があります。
job.name null ジョブ名を設定します。
ジョブ。XXX null ジョブオプションを XXX セッター名で設定します。
trigger.XXX null XXX セッター名で trigger オプションを設定します。
stateful false デフォルトのジョブの代わりに Quartz @PersistJobDataAfterExecution および @DisallowConcurrentExecution を使用します。
fireNow false true の場合、SimpleTrigger の使用時にルートが起動するとトリガーが実行されます。
deleteJob true true に設定すると、ルートが停止したときにトリガーが自動的に削除されます。false に設定すると、スケジューラーに残ります。false に設定すると、ユーザーは camel Uri で事前設定されたトリガーを再利用できます。名前が一致するだけです。deleteJob と pauseJob の両方を true に設定することはできないことに注意してください。
pauseJob false true に設定すると、ルート停止時にトリガーが自動的に一時停止します。false に設定すると、スケジューラーに残ります。false に設定すると、ユーザーは camel Uri で事前設定されたトリガーを再利用できます。名前が一致するだけです。deleteJob と pauseJob の両方を true に設定することはできないことに注意してください。
durableJob
false
Camel 2.12.4/2.13: 孤立した後にジョブが保存したままになるかどうか(トリガーを参照しない)。
recoverableJob
false
Camel 2.12.4/2.13: 'recovery' または 'fail-over' が発生した場合にジョブを再実行する必要があるかどうかをスケジューラーに指示します。
usingFixedCamelContextName false Camel 2.15.0: true の場合、JobDataMapCamelContext 名を直接使用して Camel コンテキストを参照します。false の場合は、deployed がデプロイ中に変更される可能性のある管理名を使用します。JobDataMap CamelContext
customCalendar なし Camel 2.17.0: スケジューラーおよびトリガーにカスタムカレンダーを追加して、特定の日付範囲を回避します(例:Holidays)。customCalendar タイプは org.quartz.Calendar です。
たとえば、以下のルーティングルールは、mock:results エンドポイントに 2 つのタイマーイベントを実行します。
from("quartz2://myGroup/myTimerName?trigger.repeatInterval=2&trigger.repeatCount=1")
    .routeId("myRoute")
    .to("mock:result");
Copy to Clipboard Toggle word wrap
stateful=true を使用する場合、JobDataMap はジョブが実行されるたびに再永続化されるため、次の実行の状態を維持します。
OSGi での実行と quartz ルートを持つ複数のバンドルがある
Apache ServiceMix や Apache Karaf などの OSGi で を実行し、Quartz2 エンドポイントから開始する Camel ルートを持つ複数のバンドルがある場合は、OSGi コンテナーの QuartzScheduler で必要となるため、この ID が一意である <camelContext> に ID を割り当てるようにしてください。<camelContext> に id を設定しないと、一意の ID が自動的に割り当てられ、問題はありません。

quartz.properties ファイルの設定

デフォルトでは、Quartz はクラスパスの org/quartz ディレクトリーで quartz.properties ファイルを検索します。WAR デプロイメントを使用している場合は、WEB-INF/classes/org/quartz の quartz.properties をドロップするだけです。
ただし、Camel Quartz2 コンポーネントでは、プロパティーを設定することもできます。
Expand
パラメーター デフォルト タイプ 説明
properties null プロパティー java.util.Properties インスタンスを設定できます。
propertiesFile null 文字列 クラスパスから読み込むプロパティーのファイル名
これには、Spring XML で以下のように設定します。
<bean id="quartz" class="org.apache.camel.component.quartz2.QuartzComponent">
    <property name="propertiesFile" value="com/mycompany/myquartz.properties"/>
</bean>
Copy to Clipboard Toggle word wrap

JMX での Quartz スケジューラーの有効化

JMX を有効にするには、quartz スケジューラープロパティーを設定する必要があります。これは通常、org.quartz.scheduler.jmx.export オプションを設定ファイルの true 値に設定します。
Camel 2.13 以降では、明示的に無効にしない限り、Camel はこのオプションを true に自動的に設定します。

Quartz スケジューラーの起動

Quartz2 コンポーネントは、Quartz スケジューラーの遅延、または自動起動を行わないオプションを提供します。
Expand
パラメーター デフォルト タイプ 説明
startDelayedSeconds 0 int quartz スケジューラーを起動するまで待機する秒数。
autoStartScheduler true boolean スケジューラーを自動起動するかどうか。
これには、Spring XML で以下のように設定します。
<bean id="quartz2" class="org.apache.camel.component.quartz2.QuartzComponent">
    <property name="startDelayedSeconds" value="5"/>
</bean>
Copy to Clipboard Toggle word wrap

クラスタリング

クラスターモードで Quartz を使用する場合、JobStore はクラスター化されます。次に、Quartz2 コンポーネントは、ノードの停止/シャットダウン時にトリガーを一時停止/削除し ません。これにより、トリガーはクラスター内の他のノードでも実行を継続できます。
注記: クラスターノードで実行している場合は、エンドポイントに対して一意のジョブ名/グループを確認するためのチェックが行われません。

メッセージヘッダー

Camel は Quartz Execution Context からの getter をヘッダー値として追加します。以下のヘッダー 追加されます: calendarfireTimejobDetailjobInstancejobRuntTimemergedJobDataMapnextFireTimepreviousFireTimerefireCount、Result、scheduledFireTimeschedulertrigger NametriggerGroup
fireTime ヘッダーには、エクスチェンジがいつ実行されたかの java.util.Date が含まれます。

Cron トリガーの使用

Quartz は、便利な形式でタイマーを指定する Cron のような式 をサポートしています。これらの式は cron URI パラメーターで使用できますが、有効な URI エンコーディングを保持するには、スペースの代わりに + を使用できます。
たとえば、以下は、毎週 12pm (noon)から 6pm までの 5 分ごとにメッセージを表示します。
from("quartz2://myGroup/myTimerName?cron=0+0/5+12-18+?+*+MON-FRI").to("activemq:Totally.Rocks");
Copy to Clipboard Toggle word wrap
これは cron 式の使用と同等です。
0 0/5 12-18 ? * MON-FRI
Copy to Clipboard Toggle word wrap
以下の表は、有効な URI 構文を保持するために使用する URI 文字エンコーディングを示しています。
Expand
URI 文字 Cron 文字
\+ スペース

タイムゾーンの指定

Quartz スケジューラーを使用すると、トリガーごとにタイムゾーンを設定できます。たとえば、国のタイムゾーンを使用するには、以下のように実行できます。
quartz2://groupName/timerName?cron=0+0/5+12-18+?+*+MON-FRI&trigger.timeZone=Europe/Stockholm
Copy to Clipboard Toggle word wrap
timeZone 値は、java.util.TimeZone で許可される値です。

QuartzScheduledPollConsumerScheduler の使用

Quartz2 コンポーネントは Polling Consumer スケジューラーを提供します。これにより、FileFTP コンシューマーなどの Polling Consumer に cron ベースのスケジューリングを使用できます。
たとえば、cron ベースの式を使用して 2 秒間隔でファイルをポーリングするには、Camel ルートを以下のように定義できます。
    from("file:inbox?scheduler=quartz2&scheduler.cron=0/2+*+*+*+*+?")
       .to("bean:process");
Copy to Clipboard Toggle word wrap
scheduler=quartz2 を定義して、Quartz2 ベースのスケジューラーを使用するように Camel に指示することに注意してください。次に、scheduler.xxx オプションを使用してスケジューラーを設定します。Quartz2 スケジューラーでは、cron オプションを設定する必要があります。
以下のオプションがサポートされます。
Expand
パラメーター デフォルト タイプ 説明
quartzScheduler null org.quartz.Scheduler カスタム Quartz スケジューラーを使用するには、以下を行います。設定しない場合は、Quartz2 コンポーネントから共有スケジューラーが使用されます。
cron null 文字列 必須: ポーリングをトリガーするために cron 式を定義します。
triggerId null 文字列 トリガー ID を指定します。指定しない場合は、UUID が生成され、使用されます。クラスター環境では triggerId を指定できず、クラスターの各ノードには一意の instanceId が必要です。
triggerGroup QuartzScheduledPollConsumerScheduler 文字列 トリガーグループを指定します。
timeZone デフォルト TimeZone CRON トリガーに使用するタイムゾーン。
重要: エンドポイント URI からこれらのオプションを設定することを忘れないでください。には、scheduler の接頭辞を指定する必要があります。たとえば、トリガー ID およびグループを設定するには、以下を実行します。
    from("file:inbox?scheduler=quartz2&scheduler.cron=0/2+*+*+*+*+?&scheduler.triggerId=myId&scheduler.triggerGroup=myGroup")
       .to("bean:process");
Copy to Clipboard Toggle word wrap
Spring には CRON スケジューラーもあるため、以下を使用することもできます。
    from("file:inbox?scheduler=spring&scheduler.cron=0/2+*+*+*+*+?")
       .to("bean:process");
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat