The cron scheduled route policy is a route policy that enables you to start, stop, suspend, and resume routes, where the timing of these events is specified using cron expressions. To define a cron scheduled route policy, create an instance of the following class:
org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy
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 10 shows how to schedule a route to start up using the Java
DSL. The policy is configured with the cron expression,
*/3 * * * * ?, which triggers a start event
every 3 seconds.
In Java DSL, you attach the route policy to the route by
calling the routePolicy() DSL command in the
route.
Example 10. Java DSL Example of a Cron Scheduled Route
// Java
CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy();
policy.setRouteStartTime("*/3 * * * * ?");
from("direct:start")
.routeId("test")
.routePolicy(policy)
.to("mock:success");;![]() | Note |
|---|---|
You can specify multiple policies on the route by
calling |
Example 11shows 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 11. XML DSL Example of a Cron Scheduled Route
<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>![]() | Note |
|---|---|
You can specify multiple policies on the route by
setting the value of |
The cron expression syntax has its
origins in the UNIX cron utility, which
schedules jobs to run in the background on a UNIX system. A
cron expression is effectively a syntax for wildcarding
dates and times that enables you to specify either a single
event or multiple events that recur periodically.
A cron expression consists of 6 or 7 fields in the following order:
Seconds Minutes Hours DayOfMonth Month DayOfWeek [Year]
The Year field is optional and usually
omitted, unless you want to define an event that occurs once
and once only. Each field consists of a mixture of literals
and special characters. For example, the following cron
expression specifies an event that fires once every day at
midnight:
0 0 24 * * ?
The * character is a wildcard that matches
every value of a field. Hence, the preceding expression
matches every day of every month. The ?
character is a dummy placeholder that means ignore
this field. It always appears either in the
DayOfMonth field or in
the DayOfWeek field, because it is not
logically consistent to specify both of these fields at the
same time. For example, if you want to schedule an event
that fires once a day, but only from Monday to Friday, use
the following cron expression:
0 0 24 ? * MON-FRI
Where the hyphen character specifies a range,
MON-FRI. You can also use the forward slash
character, /, to specify increments. For
example, to specify that an event fires every 5 minutes, use
the following cron expression:
0 0/5 * * * ?
For a full explanation of the cron expression syntax, see the Wikipedia article on CRON expressions.
You can use a cron 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 |
|---|---|---|---|
routeStartString
|
String
| None | Specifies a cron expression that triggers one or more route start events. |
The following table lists the parameters for scheduling one or more route stops.
| Parameter | Type | Default | Description |
|---|---|---|---|
routeStopTime
|
String
| None | Specifies a cron expression that triggers one or more route stop events. |
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 |
|---|---|---|---|
routeSuspendTime
|
String
| None | Specifies a cron expression that triggers one or more route suspend events. |






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


