A Java library for easy, reliable background job processing with persistent storage, using Java 8 lambdas.
JobRunr is a Java library that simplifies background job processing on the JVM, allowing developers to enqueue, schedule, and manage recurring tasks using Java 8 lambdas. It solves the problem of offloading CPU and I/O intensive work from the main application thread, ensuring tasks are executed reliably with persistent storage. The library supports distributed environments and provides fault tolerance with automatic retries.
Java developers building web applications, microservices, or any JVM-based system that requires reliable background task execution, such as REST APIs needing async processing or batch job handling.
Developers choose JobRunr for its extremely simple API using lambdas, robust persistence across various databases, and built-in support for clustering and fault tolerance, making it a production-ready alternative to more complex schedulers.
An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows creating background jobs using only Java 8 lambda expressions, as demonstrated in the minimal code snippet `BackgroundJob.enqueue(() -> System.out.println("Simple!"));` from the README.
Supports various RDBMS and NoSQL databases like Postgres and MongoDB, ensuring jobs survive application restarts and cluster failures, as highlighted in the features.
Includes automatic retries with a smart back-off policy for failed jobs, improving reliability in production environments, as noted in the key features.
Uses optimistic locking to guarantee single execution across multiple instances, preventing duplicate job processing in scaled deployments, per the distributed design.
Designed for easy integration into existing Java applications with minimal dependencies like ASM and slf4j, keeping overhead low.
Requires configuring and maintaining a database for job persistence, which adds deployment complexity compared to in-memory schedulers, as storage is mandatory.
Limited to Java applications; not suitable for polyglot environments or projects using other programming languages, restricting its use outside the JVM ecosystem.
Initial setup with storage providers and job activators can be involved, especially for non-Spring applications, despite the simple API.
JobRunr is an open-source alternative to the following products:
Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.
Celery is a distributed task queue system for Python that handles asynchronous job processing, scheduling, and message passing, often used with web frameworks like Django.
Quartz is a job scheduling library for .NET applications that allows developers to create and manage scheduled tasks and background jobs.
Sidekiq is a background job processing framework for Ruby applications, using Redis to queue and execute jobs asynchronously.
HangFire is an open-source background job processing library for .NET applications that helps perform fire-and-forget, delayed, and recurring tasks.
Delayed Job is a database-backed asynchronous job queue system for Ruby on Rails applications, allowing background processing of long-running tasks.