Maven Coordinates

To enable Scheduling add the following dependency to your project’s pom.xml (see Managing Dependencies).

<dependency>
    <groupId>io.helidon.scheduling</groupId>
    <artifactId>helidon-scheduling</artifactId>
</dependency>
Copied

Scheduling

For scheduling periodic tasks it is possible to choose fixed rate setup or Cron expression.

Fixed rate

For simple fixed rate invocation use .

Example of scheduling with fixed rate use Scheduling.fixedRateBuilder() builder.
Scheduling.fixedRateBuilder()
        .delay(10)
        .initialDelay(5)
        .timeUnit(TimeUnit.MINUTES)
        .task(inv -> System.out.println("Every 10 minutes, first invocation 5 minutes after start"))
        .build();
Copied

Metadata like human-readable interval description or configured values are available through FixedRateInvocation provided as task parameter.

Example with ivocation metadata
Scheduling.fixedRateBuilder()
        .delay(10)
        .task(inv -> System.out.println("Method invoked " + inv.description()))
        .build();
Copied

Cron expression

For more complicated interval definition, cron expression can be leveraged with Scheduling.cronBuilder() builder.

Example of scheduling with cron expression
Scheduling.cronBuilder()
    .expression("0 15 8 ? * *")
    .task(inv -> System.out.println("Executer every day at 8:15"))
    .build();
Copied
Cron expression format
<seconds> <minutes> <hours> <day-of-month> <month> <day-of-week> <year>
Copied
Cron expression fields
OrderNameSupported valuesSupported field formatOptional
1seconds0-59CONST, LIST, RANGE, WILDCARD, INCREMENTfalse
2minutes0-59CONST, LIST, RANGE, WILDCARD, INCREMENTfalse
3hours0-23CONST, LIST, RANGE, WILDCARD, INCREMENTfalse
4day-of-month1-31CONST, LIST, RANGE, WILDCARD, INCREMENT, ANY, LAST, WEEKDAYfalse
5month1-12 or JAN-DECCONST, LIST, RANGE, WILDCARD, INCREMENTfalse
6day-of-week1-7 or SUN-SATCONST, LIST, RANGE, WILDCARD, INCREMENT, ANY, NTH, LASTfalse
7year1970-2099CONST, LIST, RANGE, WILDCARD, INCREMENTtrue
Field formats
NameRegex formatExampleDescription
CONST\d+12exact value
LIST\d+,\d+(,\d+)*1,2,3,4list of constants
RANGE\d+-\d+15-30range of values from-to
WILDCARD\**all values withing the field
INCREMENT\d+\/\d+0/5inital number / increments, 2/5 means 2,7,9,11,16,…​
ANY\??any day(apply only to day-of-week and day-of-month)
NTH\#1#3nth day of the month, 2#3 means third monday of the month
LAST\d*L(+\d+|\-\d+)?3L-3last day of the month in day-of-month or last nth day in the day-of-week
WEEKDAY\#1#3nearest weekday of the nth day of month, 1W is the first monday of the week
Examples
Cron expressionDescription
* * * * * ?Every second
0/2 * * * * ? *Every 2 seconds
0 45 9 ? * *Every day at 9:45
0 15 8 ? * MON-FRIEvery workday at 8:15

Metadata like human-readable interval description or configured values are available through CronInvocation provided as task parameter.

Example with ivocation metadata
Scheduling.cronBuilder()
    .expression("0 15 8 ? * *")
    .task(inv -> System.out.println("Method invoked " + inv.description()))
    .build();
Copied