Timer Component
The timer: component is used to generate message exchanges when a timer fires You can only consume events from this endpoint.
URI format
timer:name?options
Where options is a query string that can specify any of the following parameters:
Name |
Default Value |
Description |
---|---|---|
name |
null |
The name of the Timer object which is created and shared across endpoints. So if you use the same name for all your timer endpoints then only one Timer object & thread will be used |
time |
|
The date/time that the (first) event should be generated. |
period |
-1 |
If set to greater than 0, then generate periodic events every period milliseconds |
delay |
-1 |
The number of milliseconds to wait before the first event is generated. Should not be used in conjunction with the time parameter. |
fixedRate |
false |
Events take place at approximately regular intervals, separated by the specified period. |
daemon |
true |
Should the thread associated with the timer endpoint be run as a daemon. |
Exchange Properties
When the timer is fired it adds the following information as properties to the Exchange.
Name |
Type |
Description |
---|---|---|
org.apache.camel.timer.name |
String |
the name option |
org.apache.camel.timer.time |
Date |
the time option |
org.apache.camel.timer.period |
long |
the period option |
org.apache.camel.timer.firedTime |
Date |
Camel 1.5: the current time when the consumer fired |
Message Headers
When the timer is fired it adds the following information as headers to the IN message
Name |
Type |
Description |
---|---|---|
firedTime |
Date |
Camel 1.5: the current time when the consumer fired |
Using
To setup a route that generates an event every 60 seconds:
from("timer://foo?fixedRate=true&delay=0&period=60000").to("bean:myBean?methodName=someMethodName");
The above route will generate an event then invoke the someMethodName on the bean called myBean in the Registry such as JNDI or Spring.