KrontabScheduler¶
KronScheduler
is the simple interface with only one function next
. This function optionally get as a parameter DateTime
which will be used as start point for the calculation of next trigger time. This function will return the next DateTime
when something must happen.
Default realisation¶
Default realisation (CronDateTimeScheduler
) can be created using several ways:
- Via
buildSchedule
(orcreateSimpleScheduler
) functions with crontab-like syntax parameter - Via
buildSchedule
(orSchedulerBuilder
object), which using lambda to configure scheduler
In the examples below the result of created scheduler will be the same.
Crontab-like way¶
Crontab-like syntax
See String format for more info about the crontab-line syntax
This way will be very useful for cases when you need to configure something via external configuration (from file on startup or via some parameter from requests, for example):
val schedule = "5 * * * *"
val scheduler = buildSchedule(schedule)
scheduler.asFlow().onEach {
// this block will be called every minute at 5 seconds
}.launchIn(someCoroutineScope)
Lambda way¶
In case of usage builder (lets call it lambda way
), you will be able to configure scheduler in more type-safe way:
val scheduler = buildSchedule {
seconds {
at(5)
}
}
scheduler.asFlow().onEach {
// this block will be called every minute at 5 seconds
}.launchIn(someCoroutineScope)
Custom scheduler¶
You are always able to use your own realisation of scheduler. For example:
class RandomScheduler : KronScheduler {
override suspend fun next(relatively: DateTime): DateTime {
return relatively + DateTimeSpan(seconds = Random.nextInt() % 60)
}
}
In the example above we have created RandomScheduler
, which will return random next time in range 0-60
seconds since relatively
argument.