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:

<dependency>
          <groupId>org.apache.camel</groupId>
          <artifactId>camel-quartz</artifactId>
          <version>${camel.version}</version>
</dependency>

Found the article helpful? if so please follow us on Socials