blob: 4e07fa3f00c44b7b02aa7c21bcae924d9b3406ca [file] [log] [blame]
= SimpleScheduledRoutePolicy
~~~~~~~~~~~~~~~~~~~~~~~~~~
SimpleScheduledRoutePolicy is a
xref:scheduledroutepolicy.adoc[ScheduledRoutePolicy] that facilitates
route activation, de-activation, suspension and resumption of routes
based on a xref:components::quartz-component.adoc[Quartz] SimpleTrigger.
Maven users will need to add a `camel-quartz` dependency to their
`pom.xml` to avail this capability.
[source,xml]
----
<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
xref:components::quartz-component.adoc[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
[width="100%",cols="25%,25%,25%,25%",options="header",]
|=======================================================================
|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
[width="100%",cols="25%,25%,25%,25%",options="header",]
|=======================================================================
|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
[width="100%",cols="25%,25%,25%,25%",options="header",]
|=======================================================================
|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
[width="100%",cols="25%,25%,25%,25%",options="header",]
|=======================================================================
|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
[source,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
[source,xml]
----
<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>
----