blob: dfef6419c5c0d60a1d03d04149b99795739b5cb5 [file] [log] [blame]
= 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[]