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.第176章 Timer
タイマーコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
timer: コンポーネントは、タイマーが実行されるとメッセージエクスチェンジを生成するために使用されます。このエンドポイントからイベントのみを消費できます。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
timer:name[?options]
timer:name[?options]
ここでの
name
は Timer
オブジェクトの名前で、これはエンドポイント間で作成および共有されます。したがって、すべてのタイマーエンドポイントに同じ名前を使用する場合は、1 つの Timer
オブジェクトとスレッドのみが使用されます。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
注記: 生成されたエクスチェンジの IN ボディーは
null
です。したがって、exchange.getIn().getBody()
は null
を返します。
高度なスケジューラー
より詳細スケジューリングをサポートする Quartz コンポーネントも参照してください。
人間が分かりやすい形式で時間を指定
Camel 2.3 以降では、人間が分かりやすい構文 で時間を指定できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
time
|
null
|
java.util.Date は 最初 のイベントを生成する必要があります。URI を使用する場合、パターンは yyyy-MM-dd HH:mm:ss または yyyy-MM-dd'T'HH:mm:ss です。
|
pattern
|
null
|
URI 構文を使用して time オプションの設定に使用するカスタムの Date パターンを指定できます。
|
period
|
1000
|
0 を超える場合は、期間 (ミリ秒単位)ごとに定期的なイベントを生成します。
|
delay
|
1000
|
最初のイベントが生成されるまで待機する時間(ミリ秒単位)。time オプションと併用しないでください。Camel 2.17 以降 では、負の遅延を指定できます。このシナリオでは、タイマーがイベントをできるだけ早く生成し、実行します。
|
fixedRate
|
false
|
イベントは、指定された期間で区切られた、約一定間隔で行われます。 |
daemon
|
true
|
タイマーエンドポイントに関連付けられたスレッドがデーモンとして実行されるかどうかを指定します。 |
repeatCount
|
0
|
camel 2.8: 実行の最大数を指定します。そのため、これを 1 に設定するとタイマーは一度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 |
エクスチェンジプロパティー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
タイマーが実行されると、以下の情報をプロパティーとして
Exchange
に追加します。
名前 | タイプ | 説明 |
---|---|---|
Exchange.TIMER_NAME
|
文字列
|
name オプションの値。
|
Exchange.TIMER_TIME
|
日付
|
time オプションの値。
|
Exchange.TIMER_PERIOD
|
long
|
period オプションの値。
|
Exchange.TIMER_FIRED_TIME
|
日付
|
コンシューマーが実行した時間。 |
Exchange.TIMER_COUNTER
|
Long
|
Camel 2.8: 現在の fire カウンター。1 から始まります。 |
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
タイマーが実行されると、以下の情報をヘッダーとして IN メッセージに追加します。
名前 | タイプ | 説明 |
---|---|---|
Exchange.TIMER_FIRED_TIME
|
java.util.Date
|
コンシューマーが実行される時間 |
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
60 秒ごとにイベントを生成するルートを設定するには、以下を実行します。
from("timer://foo?fixedRate=true&period=60000").to("bean:myBean?method=someMethodName");
from("timer://foo?fixedRate=true&period=60000").to("bean:myBean?method=someMethodName");
ヒント
60000 の代わりに、より読みやすい(
period=60s
)を指定できます。
Spring DSL のルートは以下のようになります。
<route> <from uri="timer://foo?fixedRate=true&period=60000"/> <to uri="bean:myBean?method=someMethodName"/> </route>
<route>
<from uri="timer://foo?fixedRate=true&period=60000"/>
<to uri="bean:myBean?method=someMethodName"/>
</route>
できるだけ早く実行する リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.17: できるだけ早く Camel ルートでメッセージを生成することができます。負の遅延を使用できます。
<route> <from uri="timer://foo?delay=-1"/> <to uri="bean:myBean?method=someMethodName"/> </route>
<route>
<from uri="timer://foo?delay=-1"/>
<to uri="bean:myBean?method=someMethodName"/>
</route>
このようにして、タイマーは即座にメッセージを実行します。
repeatCount
パラメーターを負の遅延と共に指定して、固定数に達した後にメッセージの実行を停止することもできます。repeatCount
を指定しないと、ルートが停止するまでタイマーがメッセージを実行します。
1 度だけ発行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.8 から利用可能
ルートの起動時になど、Apache Camel ルートでメッセージを 1 度だけ実行することをお勧めします。これを行うには、以下のように
repeatCount
オプションを使用します。
<route> <from uri="timer://foo?repeatCount=1"/> <to uri="bean:myBean?method=someMethodName"/> </route>
<route>
<from uri="timer://foo?repeatCount=1"/>
<to uri="bean:myBean?method=someMethodName"/>
</route>
以下も参照してください。