The Timer component is used to generate message exchanges when a timer fires. The Timer is a simple, non persistence timer using the JDK’s in built timer mechanism.
package com.sample; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.DataFormat; public class Timer { public static void main(String args[]) throws Exception { CamelContext context = new DefaultCamelContext(); context.addRoutes(new RouteBuilder() { public void configure() throws Exception { from("timer://foo?period=1000").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { System.out.println("Hello world :" + new java.util.Date().toString()); } }); } }); context.start(); Thread.sleep(10000); context.stop(); } }
Using Quartz to fire timed based events
Quartz uses the Quartz library which uses a database to store timer events and supports distributed timers and cron notation
import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; public class QuartzRoute extends RouteBuilder { @Override public void configure() throws Exception { from("quartz://myGroupName/myTimerName?cron=0/5+*+*+*+*+?") .process(new Processor() { @Override public void process(Exchange exchange) throws Exception { System.out.println("I'm running every 5 sec..."); } }); } }
In order to use the Quartz component, you need to include camel-quartz library to your project:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-quartz</artifactId> <version>${camel.version}</version> </dependency>