The simple scheduled route policy is a route policy that enables you to start, stop, suspend, and resume routes, where the timing of these events is defined by providing the time and date of an initial event and (optionally) by specifying a certain number of subsequent repititions. To define a simple scheduled route policy, create an instance of the following class:
org.apache.camel.routepolicy.quartz.SimpleScheduledRoutePolicy
The simple scheduled route policy depends on the Quartz
component, camel-quartz. For example, if you
are using Maven as your build system, you would need to add
a dependency on the camel-quartz
artifact.
Example 8
shows how to schedule a route to start up using the Java
DSL. The initial start time, startTime, is
defined to be 3 seconds after the current time. The policy
is also configured to start the route a
second time, 3 seconds after the
initial start time, which is configured by setting
routeStartRepeatCount to 1 and
routeStartRepeatInterval to 3000
milliseconds.
In Java DSL, you attach the route policy to the route by
calling the routePolicy() DSL command in the
route.
Example 8. Java DSL Example of Simple Scheduled Route
// 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");![]() | Note |
|---|---|
You can specify multiple policies on the route by
calling |
Example 9 shows how to schedule a route to start up using the XML DSL.
In XML DSL, you attach the route policy to the route by
setting the routePolicyRef attribute on the
route element.
Example 9. XML DSL Example of Simple Scheduled Route
<bean id="date" class="java.util.Data"/>
<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>![]() | Note |
|---|---|
You can specify multiple policies on the route by
setting the value of |
The initial times of the triggers used in the simple
scheduled route policy are specified using the
java.util.Date type.The most flexible way
to define a Date instance is through the java.util.GregorianCalendar class. Use the
convenient constructors and methods of the
GregorianCalendar class to define a date
and then obtain a Date instance by calling
GregorianCalendar.getTime().
For example, to define the time and date for January 1,
2011 at noon, call a GregorianCalendar
constructor as follows:
// Java
import java.util.GregorianCalendar;
import java.util.Calendar;
...
GregorianCalendar gc = new GregorianCalendar(
2011,
Calendar.JANUARY,
1,
12, // hourOfDay
0, // minutes
0 // seconds
);
java.util.Date triggerDate = gc.getTime();The GregorianCalendar class also supports the
definition of times in different time zones. By default, it
uses the local time zone on your computer.
When you configure a simple scheduled route policy to stop a route, the route stopping algorithm is automatically integrated with the graceful shutdown procedure (see Controlling Start-Up and Shutdown of Routes). This means that the task waits until the current exchange has finished processing before shutting down the route. You can set a timeout, however, that forces the route to stop after the specified time, irrespective of whether or not the route has finished processing the exchange.
You can use a simple scheduled route policy to define one or more of the following scheduling tasks:
The following table lists the parameters for scheduling one or more route starts.
| Parameter | Type | Default | Description |
|---|---|---|---|
routeStartDate
|
java.util.Date
| None | Specifies the date and time when the route is started for the first time. |
routeStartRepeatCount
|
int
|
0
| When set to a non-zero value, specifies how many times the route should be started. |
routeStartRepeatInterval
|
long
|
0
| Specifies the time interval between starts, in units of milliseconds. |
The following table lists the parameters for scheduling one or more route stops.
| Parameter | Type | Default | Description |
|---|---|---|---|
routeStopDate
|
java.util.Date
| None | Specifies the date and time when the route is stopped for the first time. |
routeStopRepeatCount
|
int
|
0
| When set to a non-zero value, specifies how many times the route should be stopped. |
routeStopRepeatInterval
|
long
|
0
| Specifies the time interval between stops, in units of milliseconds. |
routeStopGracePeriod
|
int
|
10000
| Specifies how long to wait for the current exchange to finish processing (grace period) before forcibly stopping the route. Set to 0 for an infinite grace period. |
routeStopTimeUnit
|
long
|
TimeUnit.MILLISECONDS
| Specifies the time unit of the grace period. |
The following table lists the parameters for scheduling the suspension of a route one or more times.
| Parameter | Type | Default | Description |
|---|---|---|---|
routeSuspendDate
|
java.util.Date
| None | Specifies the date and time when the route is suspended for the first time. |
routeSuspendRepeatCount
|
int
| 0 | When set to a non-zero value, specifies how many times the route should be suspended. |
routeSuspendRepeatInterval
|
long
| 0 | Specifies the time interval between suspends, in units of milliseconds. |
The following table lists the parameters for scheduling the resumption of a route one or more times.
| Parameter | Type | Default | Description |
|---|---|---|---|
routeResumeDate
|
java.util.Date
| None | Specifies the date and time when the route is resumed for the first time. |
routeResumeRepeatCount
|
int
| 0 | When set to a non-zero value, specifies how many times the route should be resumed. |
routeResumeRepeatInterval
|
long
| 0 | Specifies the time interval between resumes, in units of milliseconds. |






![[Note]](imagesdb/note.gif)


