IPF Persistent Scheduler
Introduction
IPF’s Persistent Scheduler allows you to schedule jobs of any kind.
It is based on the Quartz scheduler and works in combination with cron expressions, which are specialized timers that define points in time for task execution. These can be exact times for tasks, fixed time intervals (like every hour or day) or calendars, a tool used to exclude certain blocks of time. This setup enables the execution of one-time or recurrent jobs. It also features a persistence layer, meaning that jobs are saved to a database, so even if an application crashes or restarts, previously scheduled jobs are recovered and continue execution as planned.
The Scheduler includes failsafes, such as a rescheduling module that runs during startup. This module restores all previously scheduled jobs into Quartz following a failure. To work with the Scheduler, begin with the SchedulingModuleInterface.
Finally, it is designed to be run in a Akka Cluster to ensure that jobs are scheduled across the cluster and can survive any number of node failures (including a total outage). Certain aspect like rehydration of jobs (which means reloading jobs following a failure) and processing of failed jobs are run on a Cluster Singleton to prevent duplicate processing in these scenarios.
The architecture for the scheduler is shown below: