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 2.7 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 2.7. 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 2.8shows 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 2.8. 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. |