| = Cron Component |
| :doctitle: Cron |
| :shortname: cron |
| :artifactid: camel-cron |
| :description: A generic interface for triggering events at times specified through the Unix cron syntax. |
| :since: 3.1 |
| :supportlevel: Stable |
| :tabs-sync-option: |
| :component-header: Only consumer is supported |
| //Manually maintained attributes |
| :camel-spring-boot-name: cron |
| |
| *Since Camel {since}* |
| |
| *{component-header}* |
| |
| The Cron component is a generic interface component that allows triggering events at a specific time interval |
| specified using the Unix cron syntax (e.g. `0/2 * * * * ?` to trigger an event every two seconds). |
| |
| As an interface component, the Cron component does not contain a default implementation. |
| Instead, it requires that the users plug the implementation of their choice. |
| |
| The following standard Camel components support the Cron endpoints: |
| |
| - xref:components::quartz-component.adoc[Camel Quartz] |
| - xref:components::spring-summary.adoc[Camel Spring] |
| |
| The Cron component is also supported in **Camel K**, which can use the Kubernetes scheduler to trigger the routes when required by the cron expression. |
| Camel K does not require additional libraries to be plugged when using cron expressions compatible with Kubernetes cron syntax. |
| |
| Maven users will need to add the following dependency to their `pom.xml` |
| for this component: |
| |
| [source,xml] |
| ------------------------------------------------------------ |
| <dependency> |
| <groupId>org.apache.camel</groupId> |
| <artifactId>camel-cron</artifactId> |
| <version>x.x.x</version> |
| <!-- use the same version as your Camel core version --> |
| </dependency> |
| ------------------------------------------------------------ |
| |
| Additional libraries may be needed to plug a specific implementation. |
| |
| |
| // component-configure options: START |
| |
| // component-configure options: END |
| |
| // component options: START |
| include::partial$component-configure-options.adoc[] |
| include::partial$component-endpoint-options.adoc[] |
| // component options: END |
| |
| // endpoint options: START |
| |
| // endpoint options: END |
| |
| == Usage |
| |
| The component can be used to trigger events at specified times, as in the following example: |
| |
| |
| [tabs] |
| ==== |
| Java:: |
| + |
| [source,java] |
| --------------------------------------------------------- |
| from("cron:tab?schedule=0/1+*+*+*+*+?") |
| .setBody().constant("event") |
| .log("${body}"); |
| --------------------------------------------------------- |
| |
| XML:: |
| + |
| [source,xml] |
| ------------- |
| <route> |
| <from uri="cron:tab?schedule=0/1+*+*+*+*+?"/> |
| <setBody> |
| <constant>event</constant> |
| </setBody> |
| <to uri="log:info"/> |
| </route> |
| ------------- |
| |
| ==== |
| |
| The schedule expression `0/3{plus}10{plus}*{plus}*{plus}*{plus}?` can be also written as `0/3 10 * * * ?` and triggers an event every three seconds only in the tenth minute of each hour. |
| |
| Breaking down the parts in the schedule expression(in order): |
| |
| - Seconds (optional) |
| - Minutes |
| - Hours |
| - Day of month |
| - Month |
| - Day of the week |
| - Year (optional) |
| |
| Schedule expressions can be made of five to seven parts. When expressions are composed of six parts, the first items is the _Seconds_ part (and year is considered missing). |
| |
| Other valid examples of schedule expressions are: |
| |
| - `0/2 * * * ?` (Five parts, an event every two minutes) |
| - `0 0/2 * * * MON-FRI 2030` (Seven parts, an event every two minutes only in the year 2030) |
| |
| include::spring-boot:partial$starter.adoc[] |