You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

CronScheduledRoutePolicy

CronScheduledRoutePolicy is a ScheduledRoutePolicy that facilitates route activation, de-activation, suspension and resumption of routes based on a Quartz CronTrigger.

Maven users will need to add a camel-quartz dependency to their pom.xml to avail this capability.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-quartz</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

Relationship to the Quartz component

All Scheduled route policies share the scheduler created by the Quartz component. In this way, scheduler, jobs and triggers can be managed in a common and consistent way.

How it works

In order to use a CronScheduledRoutePolicy it is necessary to instantiate an object of the type org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy.

In order to perform a route operation at a given time the following information must be provided.

  • Starting a route

Parameter Name

Type

Default Value

Description

routeStartTime

String

 

the initial scheduled Date and time as a Cron Expression for route start

  • Stopping a route

routeStopTime

String

 

the initial scheduled Date and time as a Cron Expression for route stop

routeStopGracePeriod

int

10 seconds

the time period to wait before initiating graceful route stop

routeStopTimeUnit

long

TimeUnit.MILLISECONDS

the time unit for the grace period expressed as java.util.concurrent.TimeUnit

  • Suspending a route

routeSuspendTime

String

 

the initial scheduled Date and time as a Cron Expression for route suspension

  • Resuming a route

routeResumeTime

String

 

the initial scheduled Date and time as a Cron Expression for route resumption

Once the org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy is created it can be wired into the camel route as follows

Configuring the policy

  • In Java
 
CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy();
policy.setRouteStartTime("*/3 * * * * ?");
                
from("direct:start")
    .routeId("test")
    .routePolicy(policy)
    .to("mock:success");;
  • Using Spring
<bean id="date" class="org.apache.camel.routepolicy.quartz.SimpleDate"/>

<bean id="startPolicy" class="org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy">
    <property name="routeStartTime" value="*/3 * * * * ?"/>
</bean>
    
<camelContext xmlns="http://camel.apache.org/schema/spring">
    <route id="testRoute" routePolicyRef="startPolicy">
        <from uri="direct:start"/>
        <to uri="mock:success"/>
    </route>
</camelContext>

See Also

ScheduledRoutePolicy - for information on policy based scheduling capability for camel routes
RoutePolicy - for information on route policies in general
Quartz -for more information on the quartz component

  • No labels