Here we have prepared a list of interesting job schedulers that are available. We had the opportunity to try JobRunr and used db-scheduler on one of our projects.
- Quartz Scheduler:
- Description: Quartz is a powerful and widely-used job scheduling library for Java. It supports complex scheduling, job persistence, clustering, and transactional behavior.
- Features: Flexible scheduling, persistent job storage, clustering support, and integration with various databases.
- GitHub: Quartz Scheduler
- JobRunr:
- Description: JobRunr is a modern, open-source job scheduling library for Java that uses the database for persistence. It is designed to be simple and developer-friendly.
- Features: Persistent job storage, distributed execution, retries, and built-in dashboard for monitoring.
- GitHub: JobRunr
- db-scheduler:
- Description: A lightweight, persistent job scheduling library for Java that uses your database for job storage and management.
- Features: Simple API for job scheduling, supports various SQL databases (MySQL, PostgreSQL, Oracle, etc.), persistent job storage with transactional guarantees, cron-like scheduling, handles retries and failures.
- GitHub: db-scheduler
- ShedLock:
- Description: ShedLock ensures that your scheduled tasks execute at most once at the same time, even in a distributed environment. It integrates well with Spring.
- Features: Distributed locks using the database, Spring integration, and supports multiple databases like MongoDB, MySQL, and PostgreSQL.
- GitHub: ShedLock
- Easy Batch:
- Description: Easy Batch is a lightweight batch processing framework that makes it easy to process large volumes of data.
- Features: Declarative job definition, built-in job persistence, and easy integration with databases.
- GitHub: Easy Batch
- Elastic-Job:
- Description: Elastic-Job is a distributed job scheduling framework for Java. It provides flexible job scheduling and execution, with job persistence in databases.
- Features: Distributed scheduling, fault-tolerant, sharding, and job persistence.
- GitHub: Elastic-Job
- EJavaCron:
- Description: EJavaCron is a simple and lightweight Java library for scheduling tasks using cron expressions.
- Features: Cron-based scheduling, lightweight, and easy to integrate.
- GitHub: EJavaCron
- OpenSymphony Quartz:
- Description: Another variation of Quartz Scheduler maintained by the OpenSymphony community.
- Features: Similar to Quartz Scheduler with flexible job scheduling and persistent storage.
- GitHub: OpenSymphony Quartz
These libraries and frameworks should provide a good starting point for implementing job scheduling in your Java applications, with varying degrees of complexity and features to suit your needs.