Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第142章 スケジューラー
スケジューラーコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.15 以降で利用可能
scheduler: コンポーネントは、スケジューラーの実行時にメッセージ交換を生成するために使用されます。このコンポーネントは Timer コンポーネントと似ていますが、スケジューリングの面でより多くの機能を提供します。また、このコンポーネントは JDK
ScheduledExecutorService
を使用します。タイマーは JDK Timer
を使用します。
このエンドポイントからのイベントのみを使用できます。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
scheduler:name[?options]
scheduler:name[?options]
name
はスケジューラーの名前で、エンドポイント間で作成および共有されます。したがって、すべてのタイマーエンドポイントに同じ名前を使用する場合は、1 つのスケジューラースレッドプールとスレッドのみが使用されます。ただし、スレッドプールは、より多くの同時スレッドを許可するように設定できます。
以下の形式で URI にクエリーオプションを追加できます。
?option=value&option=value&...
注記: 生成されたエクスチェンジの IN ボディーは
null
です。exchange.getIn().getBody()
は null
を返します。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前
|
デフォルト値
|
説明
|
---|---|---|
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 ベースがあります。注記: カスタムスケジューラーを使用する場合は、initialDelay 、useFixedDelay 、timeUnit 、およびscheduledExecutorService のオプションが使用されていない可能性があります。テキスト quartz2 を使用して Quartz2 スケジューラーを使用し、テキスト spring を使用して Spring ベースを使用し、テキスト #myScheduler を使用してレジストリー の ID でカスタムスケジューラーを参照し ます。例については、Quartz2 ページを参照してください。
|
|
scheduler.xxx
|
カスタム scheduler または Quartz2、Spring ベースのスケジューラーのいずれかを使用する場合に追加のプロパティーを設定します。たとえば、Spring ベースのスケジューラーに cron 値を指定するには、scheduler.cron を使用します。
|
|
backoffMultiplier
|
0
|
後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリングコンシューマーのバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションを使用する場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。
|
backoffIdleThreshold
|
0
|
backoffMultipler が開始する前に発生する必要のある後続のアイドルポーリングの数
|
backoffErrorThreshold
|
0
|
backoffMultipler が開始する前に発生すべき後続のエラーポーリングの数(エラーにより失敗する)。
|
補足情報 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントはスケジューラー ポーリングコンシューマー で、上記のオプションに関する詳細情報と、Polling Consumer ページの例を確認できます。
エクスチェンジプロパティー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
タイマーが実行されると、以下の情報をプロパティーとして
Exchange
に追加します。
名前
|
タイプ
|
説明
|
---|---|---|
Exchange.TIMER_NAME
|
String
|
name オプションの値。
|
Exchange.TIMER_FIRED_TIME
|
Date
|
コンシューマーが実行した時間。
|
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
60 秒ごとにイベントを生成するルートを設定するには、以下を実行します。
from("scheduler://foo?period=60s").to("bean:myBean?method=someMethodName");
from("scheduler://foo?period=60s").to("bean:myBean?method=someMethodName");
Spring DSL のルートは以下のようになります。
<route> <from uri="scheduler://foo?period=60s"/> <to uri="bean:myBean?method=someMethodName"/> </route>
<route>
<from uri="scheduler://foo?period=60s"/>
<to uri="bean:myBean?method=someMethodName"/>
</route>
完了するとスケジューラーが即座にトリガーされるように強制します。 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以前のタスクの完了直後にスケジューラーをトリガーできるようにするには、オプション greedy=true を設定します。ただし、スケジューラーは常に実行を続けます。したがって、これは注意して使用してください。
スケジューラーがアイドル状態になる リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
スケジューラーをトリガーして増やすユースケースがあります。ただし、ポーリングするタスクがないためスケジューラーを "tell the scheduler" する必要があるかもしれません。そのため、スケジューラーはバックオフオプションを使用して idle モードに変更できます。これを行うには、鍵
Exchange.SCHEDULER_POLLED_MESSAGES
を持つエクスチェンジでプロパティーをブール値 false に設定する必要があります。これにより、コンシューマーはポーリングされたメッセージがないことを示します。
コンシューマーは、コンシューマーがエクスチェンジの処理を完了するたびに、スケジューラーにポーリングされた 1 メッセージを返します。