blob: 6343754d9ef4c2160972b853e15ca85d4ae40df4 [file] [log] [blame]
= Cron Trait
// Start of autogenerated code - DO NOT EDIT! (description)
The Cron trait can be used to customize the behaviour of periodic timer/cron based integrations.
While normally an integration requires a pod to be always up and running, some periodic tasks, such as batch jobs,
require to be activated at specific hours of the day or with a periodic delay of minutes.
For such tasks, the cron trait can materialize the integration as a Kubernetes CronJob instead of a standard deployment,
in order to save resources when the integration does not need to be executed.
Integrations that start from the following components are evaluated by the cron trait: `timer`, `cron`, `quartz`.
The rules for using a Kubernetes CronJob are the following:
- `timer`: when periods can be written as cron expressions. E.g. `timer:tick?period=60000`.
- `cron`, `quartz`: when the cron expression does not contain seconds (or the "seconds" part is set to 0). E.g.
`cron:tab?schedule=0/2${plus}*{plus}*{plus}*{plus}?` or `quartz:trigger?cron=0{plus}0/2{plus}*{plus}*{plus}*{plus}?`.
This trait is available in the following profiles: **Kubernetes, Knative, OpenShift**.
// End of autogenerated code - DO NOT EDIT! (description)
// Start of autogenerated code - DO NOT EDIT! (configuration)
== Configuration
Trait properties can be specified when running any integration with the CLI:
```
kamel run --trait cron.[key]=[value] --trait cron.[key2]=[value2] integration.groovy
```
The following configuration options are available:
[cols="2,1,5a"]
|===
|Property | Type | Description
| cron.enabled
| bool
| Can be used to enable or disable a trait. All traits share this common property.
| cron.schedule
| string
| The CronJob schedule for the whole integration. If multiple routes are declared, they must have the same schedule for this
mechanism to work correctly.
| cron.components
| string
| A comma separated list of the Camel components that need to be customized in order for them to work when the schedule is triggered externally by Kubernetes.
A specific customizer is activated for each specified component. E.g. for the `timer` component, the `cron-timer` customizer is
activated (it's present in the `org.apache.camel.k:camel-k-runtime-cron` library).
Supported components are currently: `cron`, `timer` and `quartz`.
| cron.fallback
| bool
| Use the default Camel implementation of the `cron` endpoint (`quartz`) instead of trying to materialize the integration
as Kubernetes CronJob.
| cron.concurrency-policy
| string
| Specifies how to treat concurrent executions of a Job.
Valid values are:
- "Allow": allows CronJobs to run concurrently;
- "Forbid" (default): forbids concurrent runs, skipping next run if previous run hasn't finished yet;
- "Replace": cancels currently running job and replaces it with a new one
| cron.auto
| bool
| Automatically deploy the integration as CronJob when all routes are
either starting from a periodic consumer (only `cron`, `timer` and `quartz` are supported) or a passive consumer (e.g. `direct` is a passive consumer).
It's required that all periodic consumers have the same period and it can be expressed as cron schedule (e.g. `1m` can be expressed as `0/1 * * * *`,
while `35m` or `50s` cannot).
|===
// End of autogenerated code - DO NOT EDIT! (configuration)