第142章 スケジューラー


スケジューラーコンポーネント

Camel 2.15 以降で利用可能
scheduler: コンポーネントは、スケジューラーの実行時にメッセージ交換を生成するために使用されます。このコンポーネントは Timer コンポーネントと似ていますが、スケジューリングの面でより多くの機能を提供します。また、このコンポーネントは JDK ScheduledExecutorService を使用します。タイマーは JDK Timer を使用します。
このエンドポイントからのイベントのみを使用できます。

URI 形式

scheduler:name[?options]
Copy to Clipboard Toggle word wrap
name はスケジューラーの名前で、エンドポイント間で作成および共有されます。したがって、すべてのタイマーエンドポイントに同じ名前を使用する場合は、1 つのスケジューラースレッドプールとスレッドのみが使用されます。ただし、スレッドプールは、より多くの同時スレッドを許可するように設定できます。
以下の形式で URI にクエリーオプションを追加できます。 ?option=value&option=value&...
注記: 生成されたエクスチェンジの IN ボディーは null です。exchange.getIn().getBody()null を返します。

オプション

Expand
名前
デフォルト値
説明
initialDelay 1000 最初のポーリングが開始するまでの時間(ミリ秒単位)
delay
500
次のポーリングまでの時間(ミリ秒単位)
timeUnit
MILLISECONDS initialDelay および delay オプションの時間単位。
useFixedDelay true 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。
pollStrategy プラグ可能な org.apache.camel.PollingConsumerPollingStrategy により、エクスチェンジ が作成され、Camel でルーティングされる に、通常 poll 操作中に発生するエラー処理を制御するカスタム実装を提供できます。つまり、ポーリングにより情報を収集しているときにエラーが発生し (例えばファイルネットワークへのアクセスに失敗した)、Camel はそれにアクセスしてファイルをスキャンできません。デフォルトの実装は、WARN レベルで原因となった例外をログに記録し、無視します。
runLoggingLevel TRACE コンシューマーはポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。
sendEmptyMessageWhenIdle false ポーリングコンシューマーがファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。
greedy false greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。
scheduler ポーリングコンシューマーの実行時に実行するスケジューラーとして使用するカスタム org.apache.camel.spi.ScheduledPollConsumerScheduler をプラグインできるようにします。デフォルトの実装はScheduledExecutorService を使用し、CRON 式をサポートする Quartz2 および Spring ベースがあります。注記: カスタムスケジューラーを使用する場合は、initialDelayuseFixedDelaytimeUnit、およびscheduledExecutorService のオプションが使用されていない可能性があります。テキスト quartz2 を使用して Quartz2 スケジューラーを使用し、テキスト spring を使用して Spring ベースを使用し、テキスト #myScheduler を使用してレジストリー の ID でカスタムスケジューラーを参照し ます。例については、Quartz2 ページを参照してください。
scheduler.xxx カスタム scheduler または Quartz2Spring ベースのスケジューラーのいずれかを使用する場合に追加のプロパティーを設定します。たとえば、Spring ベースのスケジューラーに cron 値を指定するには、scheduler.cron を使用します。
backoffMultiplier 0 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリングコンシューマーのバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションを使用する場合は、backoffIdleThresholdbackoffErrorThreshold も設定する必要があります。
backoffIdleThreshold 0 backoffMultipler が開始する前に発生する必要のある後続のアイドルポーリングの数
backoffErrorThreshold 0 backoffMultipler が開始する前に発生すべき後続のエラーポーリングの数(エラーにより失敗する)。

補足情報

このコンポーネントはスケジューラー ポーリングコンシューマー で、上記のオプションに関する詳細情報と、Polling Consumer ページの例を確認できます。

エクスチェンジプロパティー

タイマーが実行されると、以下の情報をプロパティーとして Exchange に追加します。
Expand
名前
タイプ
説明
Exchange.TIMER_NAME
String
name オプションの値。
Exchange.TIMER_FIRED_TIME
Date
コンシューマーが実行した時間。

60 秒ごとにイベントを生成するルートを設定するには、以下を実行します。
from("scheduler://foo?period=60s").to("bean:myBean?method=someMethodName");
Copy to Clipboard Toggle word wrap
上記のルートはイベントを生成し、JNDI や Spring などの レジストリーmyBean という Bean で someMethodName メソッドを呼び出します。
Spring DSL のルートは以下のようになります。
<route>
  <from uri="scheduler://foo?period=60s"/>
  <to uri="bean:myBean?method=someMethodName"/>
</route>
Copy to Clipboard Toggle word wrap

完了するとスケジューラーが即座にトリガーされるように強制します。

以前のタスクの完了直後にスケジューラーをトリガーできるようにするには、オプション greedy=true を設定します。ただし、スケジューラーは常に実行を続けます。したがって、これは注意して使用してください。

スケジューラーがアイドル状態になる

スケジューラーをトリガーして増やすユースケースがあります。ただし、ポーリングするタスクがないためスケジューラーを "tell the scheduler" する必要があるかもしれません。そのため、スケジューラーはバックオフオプションを使用して idle モードに変更できます。これを行うには、鍵 Exchange.SCHEDULER_POLLED_MESSAGES を持つエクスチェンジでプロパティーをブール値 false に設定する必要があります。これにより、コンシューマーはポーリングされたメッセージがないことを示します。
コンシューマーは、コンシューマーがエクスチェンジの処理を完了するたびに、スケジューラーにポーリングされた 1 メッセージを返します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat