SimpleScheduledRoutePolicy
SimpleScheduledRoutePolicy is a ScheduledRoutePolicy that facilitates route activation, de-activation, suspension and resumption of routes based on a Quartz SimpleTrigger.
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 [Quartz] component
From Camel 2.12.2 onwards you can also make use of the Quartz based implementation of this route policy.
How it works
In order to use a SimpleScheduledRoutePolicy it is necessary to
instantiate an object of the type
org.apache.camel.routepolicy.quartz.SimpleScheduledRoutePolicy.
In order to perform a route operation at a given time the following information must be provided.
- 
Starting a route
 
| Parameter Name | Type | Default | Description | 
|---|---|---|---|
routeStartDate  | 
java.util.Date  | 
the initial scheduled Date and time for route start  | 
|
routeStartRepeatCount  | 
int  | 
no of times to repeat the job  | 
|
routeStartRepeatInterval  | 
long  | 
the time interval in milliseconds to trigger the next attempt to start the route  | 
- 
Stopping a route
 
| Parameter Name | Type | Default | Description | 
|---|---|---|---|
routeStopDate  | 
java.util.Date  | 
the initial scheduled Date and time for route stop  | 
|
routeStopRepeatCount  | 
int  | 
no of times to repeat the job  | 
|
routeStopRepeatInterval  | 
long  | 
the time interval in milliseconds to trigger the next attempt to stop the route  | 
|
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 | Description | 
|---|---|---|---|
routeSuspendDate  | 
java.util.Date  | 
the initial scheduled Date and time for route suspension  | 
|
routeSuspendRepeatCount  | 
int  | 
no of times to repeat the job  | 
|
routeSuspendRepeatInterval  | 
long  | 
the time interval in milliseconds to trigger the next attempt to suspend the route  | 
- 
Resuming a route
 
| Parameter Name | Type | Default | Description | 
|---|---|---|---|
routeResumeDate  | 
java.util.Date  | 
the initial scheduled Date and time for route start  | 
|
routeResumeRepeatCount  | 
int  | 
no of times to repeat the job  | 
|
routeResumeRepeatInterval  | 
long  | 
the time interval in milliseconds to trigger the next attempt to resume the route  | 
Once the
org.apache.camel.routepolicy.quartz.SimpleScheduledRoutePolicy is
created it can be wired into the camel route as follows
Configuring the policy
- 
In Java
 
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
long startTime = System.currentTimeMillis() + 3000L;
policy.setRouteStartDate(new Date(startTime));
policy.setRouteStartRepeatCount(1);
policy.setRouteStartRepeatInterval(3000);
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.SimpleScheduledRoutePolicy">
    <property name="routeStartDate" ref="date"/>
    <property name="routeStartRepeatCount" value="1"/>
    <property name="routeStartRepeatInterval" value="3000"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
    <route id="myroute" routePolicyRef="startPolicy">
        <from uri="direct:start"/>
        <to uri="mock:success"/>
    </route>
</camelContext>