Create a bunch of background jobs atomically using a batch and then chain a new job which will run when the complete batch finishes.
BackgroundJob .startBatch(this::sendEmailToEachSubscriber) .continueWith(() -> reportService.createReport(...)) .continueWith(() -> notifyService.notify("sales-team", ...));
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!
Just came across JobRunr on Github. Exactly what I have been looking for! Went through the source and completely inline with how software should be written. Simple, nicely architectured! Great job!
Works perfectly, this framework is a lifesaver for me.
Omg…. This being released like a year ago, would be great (for us). Instead, we are hitting a lot of walls trying to use Quartz to replace an old in-house job scheduler
Easy to set up, easy to use. Add the jar from Maven Central and start scheduling jobs. An easy alternative for Spring Batch and Quartz Scheduler.
Background jobs are regular java methods with regular arguments – no super class or interface implementation required.
Thanks to the built-in web interface, you have an overview of all your background jobs and observe the state of each job in detail.
Out of the box support for popular logging frameworks allows you to catch errors early with zero configuration.
Background method calls and their arguments are serialized to JSON and can travel over JVM instances.
You can use JobRunr on different machines to get more processing power with no extra configuration – synchronization is performed automatically.
Once a background job was created without any exception, JobRunr takes the responsibility to process it at least once.
You are free to throw unhandled exceptions or terminate your application – background jobs will be re-tried automatically.
Job filters allow you to add custom features to the background processing in a way similar to servlet filters.
Job storage access is fully abstracted and you can implement support for your favorite storage.
JobRunr takes just enough jobs into memory to process them efficiently and does not keep any locks on other jobs. This allows to distribute the jobs in the best possible manner.
You don’t need to perform manual storage clean-up – JobRunr keeps it as clean as possible and removes succeeded jobs automatically.