CronScheduledRoutePolicy
Available as of Camel version 2.6
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.
Relationship to the [Quartz2] component
From Camel 2.12.2 onwards you can also make use of the Quartz2 based implementation of this route policy.
<bean id="myStartPolicy" class="org.apache.camel.routepolicy.quartz2.CronScheduledRoutePolicy"> <!-- start every 5min from monday to saturday --> <property name="routeStartTime" value="0 0/5 * ? * 1-6 *" /> </bean>
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
Parameter Name
Type
Default Value
Description
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
Parameter Name
Type
Default Value
Description
routeSuspendTime
String
the initial scheduled Date and time as a Cron Expression for route suspension
Resuming a route
Parameter Name
Type
Default Value
Description
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 startPolicy = new CronScheduledRoutePolicy(); startPolicy.setRouteStartTime("*/3 * * * * ?"); from("direct:start") .routeId("testRoute").routePolicy(startPolicy).noAutoStartup() .to("mock:success");
- Using Spring
<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" autoStartup="false"> <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