Using the Timer Component with Camel

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:

<?xml version="1.0" encoding="UTF-8"?><project>
   <dependency>
                 
      <groupId>org.apache.camel</groupId>
                 
      <artifactId>camel-quartz</artifactId>
                 
      <version>${camel.version}</version>
       
   </dependency>
</project>