Documentation for a newer release is available. View Latest

IPF Persistent Scheduler

Introduction

IPF’s Persistent Scheduler allows you to schedule jobs of any kind.

It is based on the Quartz scheduler and supports two types of job scheduling:

  • Recurrent jobs: defined using cron expressions, which are specialised timers that define points in time for recurring task execution.

  • One-time jobs: defined using a Java LocalDateTime or Instant object for millisecond-precise, single-execution scheduling.

The scheduler also supports calendars, which can be used to exclude certain blocks of time from scheduling. This setup enables the flexible execution of both one-time and 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 fail-safes, 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, the persistent scheduler 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 aspects 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:

service architecture