| = 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> |
| ---- |
| |