All Projects → jobrunr → Jobrunr

jobrunr / Jobrunr

Licence: other
An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Jobrunr

Coravel
Near-zero config .NET Core micro-framework that makes advanced application features like Task Scheduling, Caching, Queuing, Event Broadcasting, and more a breeze!
Stars: ✭ 1,989 (+500.91%)
Mutual labels:  background-jobs, scheduled-jobs
Minion
Background job system for .NET applications
Stars: ✭ 94 (-71.6%)
Mutual labels:  background-jobs, scheduled-jobs
React Native Background Job
Schedule background jobs in React Native that run your JavaScript when your app is in the background/killed.
Stars: ✭ 660 (+99.4%)
Mutual labels:  background-jobs, scheduled-jobs
flume
A blazing fast job processing system backed by GenStage & Redis.
Stars: ✭ 37 (-88.82%)
Mutual labels:  background-jobs, scheduled-jobs
Frame Scheduling
Asynchronous non-blocking running many tasks in JavaScript. Demo https://codesandbox.io/s/admiring-ride-jdoq0
Stars: ✭ 64 (-80.66%)
Mutual labels:  scheduling, scheduled-jobs
Schedex
Simple scheduling for Elixir
Stars: ✭ 173 (-47.73%)
Mutual labels:  background-jobs, scheduled-jobs
Hangfire
An easy way to perform background job processing in your .NET and .NET Core applications. No Windows Service or separate process required
Stars: ✭ 7,126 (+2052.87%)
Mutual labels:  background-jobs, scheduled-jobs
Quartznet
Quartz Enterprise Scheduler .NET
Stars: ✭ 4,825 (+1357.7%)
Mutual labels:  scheduling, scheduled-jobs
Cronscheduler.aspnetcore
Cron Scheduler for AspNetCore 2.x/3.x or DotNetCore 2.x/3.x Self-hosted
Stars: ✭ 100 (-69.79%)
Mutual labels:  scheduling, scheduled-jobs
hangfire-dashboard-customize
Customize your Hangfire Dashboard (e.g. Change the Title of the Dashboard)
Stars: ✭ 19 (-94.26%)
Mutual labels:  background-jobs, scheduled-jobs
Embark
Framework for serverless Decentralized Applications using Ethereum, IPFS and other platforms
Stars: ✭ 3,478 (+950.76%)
Mutual labels:  framework
Richkware
Framework for building Windows malware, written in C++
Stars: ✭ 315 (-4.83%)
Mutual labels:  framework
Direflow
🧩 Use the best of two worlds. Create fast, performant, native Web Components using React.
Stars: ✭ 322 (-2.72%)
Mutual labels:  framework
Benchmarks
Fast and low overhead web framework fastify benchmarks.
Stars: ✭ 328 (-0.91%)
Mutual labels:  framework
Fritz2
Easily build reactive web-apps in Kotlin based on flows and coroutines.
Stars: ✭ 308 (-6.95%)
Mutual labels:  framework
Easyrealm
EasyRealm is a micro-framework that helps you use Realm.
Stars: ✭ 320 (-3.32%)
Mutual labels:  framework
Redhawk
A submodule repository for distributing REDHAWK artifacts and the latest REDHAWK source code. Use 'git clone --recurse-submodules [email protected]:RedhawkSDR/redhawk.git' to also clone all submodules.
Stars: ✭ 310 (-6.34%)
Mutual labels:  framework
Phonk
PHONK is a self-contained creative scripting toolbox for new and old Android Devices
Stars: ✭ 310 (-6.34%)
Mutual labels:  framework
Cellmesh
Game server framework based on cellnet
Stars: ✭ 310 (-6.34%)
Mutual labels:  framework
The Seo Framework
The SEO Framework WordPress plugin.
Stars: ✭ 329 (-0.6%)
Mutual labels:  framework

JobRunr logo

The ultimate library to perform background processing on the JVM.
Dead simple API. Extensible. Reliable.
Distributed and backed by persistent storage.
Open and free for commercial use.


  Drone Build  LGPLv3 Licence
Quality Scale  Reliability Rating  Security Rating
Coverage  Vulnerabilities  Bugs
Tweet about us!  Star us! Join the chat at Gitter

Overview

BackgroundJob.enqueue(() -> System.out.println("This is all you need for distributed jobs!"));

Incredibly easy way to perform fire-and-forget, delayed, scheduled and recurring jobs inside Java applications using only Java 8 lambda's. CPU and I/O intensive, long-running and short-running jobs are supported. Persistent storage is done via either RDBMS (e.g. Postgres, MariaDB/MySQL and Oracle) or NoSQL (ElasticSearch, MongoDB and Redis).

JobRunr provides a unified programming model to handle background tasks in a reliable way and runs them on shared hosting, dedicated hosting or in the cloud (hello Kubernetes) within a JVM instance.

Feedback

Thanks for building JobRunr, I like it a lot! Before that I used similar libraries in Ruby and Golang and JobRunr so far is the most pleasant one to use. I especially like the dashboard, it’s awesome! Alex Denisov

View more feedback on jobrunr.io.

Features

  • Simple: just use Java 8 lambda's to create a background job.
  • Distributed & cluster-friendly: guarantees execution by single scheduler instance using optimistic locking.
  • Persistent jobs: using either a RDMBS (four tables and a view) or a noSQL data store.
  • Embeddable: built to be embedded in existing applications.
  • Minimal dependencies: (ASM, slf4j and either jackson and jackson-datatype-jsr310, gson or a JSON-B compliant library).

Usage scenarios

Some scenarios where it may be a good fit:

  • within a REST api return response to client immediately and perform long-running job in the background
  • mass notifications/newsletters
  • calculations of wages and the creation of the resulting documents
  • batch import from xml, csv or json
  • creation of archives
  • firing off web hooks
  • image/video processing
  • purging temporary files
  • recurring automated reports
  • database maintenance
  • updating elasticsearch/solr after data changes
  • …and so on

You can start small and process jobs within your web app or scale horizontally and add as many background job servers as you want to handle a peak of jobs. JobRunr will distribute the load over all the servers for you. JobRunr is also fault-tolerant - is an external web service down? No worries, the job is automatically retried 10-times with a smart back-off policy.

JobRunr is a Java alternative to HangFire, Resque, Sidekiq, delayed_job, Celery and is similar to Quartz and Spring Task Scheduler.

Screenshots

   
   
   

Usage

Fire-and-forget tasks

Dedicated worker pool threads execute queued background jobs as soon as possible, shortening your request's processing time.

BackgroundJob.enqueue(() -> System.out.println("Simple!"));

Delayed tasks

Scheduled background jobs are executed only after a given amount of time.

BackgroundJob.schedule(() -> System.out.println("Reliable!"), Instant.now().plusHours(5));

Recurring tasks

Recurring jobs have never been simpler; just call the following method to perform any kind of recurring task using the CRON expressions.

BackgroundJob.scheduleRecurringly("my-recurring-job", () -> service.doWork(), Cron.daily());

Process background tasks inside a web application…

You can process background tasks in any web application and we have thorough support for Spring - JobRunr is reliable to process your background jobs within a web application.

… or anywhere else

Like a Spring Console Application, wrapped in a docker container, that keeps running forever and polls for new background jobs.

See https://www.jobrunr.io for more info.

Installation

Using Maven?

JobRunr is available in Maven Central - all you need to do is add the following dependency:

<dependency>
   <groupId>org.jobrunr</groupId>
<artifactId>jobrunr</artifactId>
<version>1.2.2</version>
</dependency>

Using Gradle?

Just add the dependency to JobRunr:

implementation 'org.jobrunr:jobrunr:1.2.2'

Configuration

Do you like to work Spring based?

Add the jobrunr-spring-boot-starter to your dependencies and you're almost ready to go! Just set up your application.properties:

# the job-scheduler is enabled by default
# the background-job-server and dashboard are disabled by default
org.jobrunr.job-scheduler.enabled=true
org.jobrunr.background-job-server.enabled=true
org.jobrunr.dashboard.enabled=true

Or do you prefer a fluent API?

Define a javax.sql.DataSource and put the following code on startup:

@SpringBootApplication
public class JobRunrApplication {

    public static void main(String[] args) {
        SpringApplication.run(JobRunrApplication.class, args);
    }

    @Bean
    public JobScheduler initJobRunr(DataSource dataSource, JobActivator jobActivator) {
        return JobRunr.configure()
                .useStorageProvider(SqlStorageProviderFactory
                          .using(dataSource))
                .useJobActivator(jobActivator)
                .useDefaultBackgroundJobServer()
                .useDashboard()
                .initialize();
    }
}

Contributing

See CONTRIBUTING for details on submitting patches and the contribution workflow.

How can I contribute?

  • Take a look at issues with tag called Good first issue
  • Join the discussion on gitter.
  • Answer questions on issues.
  • Fix bugs reported on issues, and send us pull request.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].