v0.9.9 - Usability and performance improvements

A 10 to 15% performance increase and live updates in the dashboard

  • Ronald Dehuysser
  • June 13, 2020

v0.9.9 - Usability and performance improvements

It’s time for a new release, and boy, what a release it is. In this release I focused on two things: performance and usability.

Do note that this release is NOT backwards compatible if you’re using a relational database: to use it, you will need to delete all JobRunr related tables in your database.

Balloons

Performance improvements

As I’m still working towards version 1.0, I did some research in the performance of JobRunr. In doing so, I found a better queuing technique to keep threads busier resulting in a 10 to 15% performance increase.

Dashboard improvements

This release also includes some new enhancements for the dashboard (spoiler alert: there is screen recording available further below):

Live updates for each job

When you’re viewing a job, you now have live updates for that job - this means that if you visit the details of an enqueued job, as soon as it will start processing, you will see the job state change to processing. The same of course goes for state changes to succeeded and deleted.

Logging for each job

The feature introduced above, live updates, means we now also can add logging for each job in the dashboard. When you log something, it is automatically also visible inside the dashboard and new messages will appear as they’re logged, it is as if you’re looking at a real console. To log something in the dashboard, you have two options:

  • you can use the JobContext and use its logger:
    jobContext.logger().info('this will appear in the dashboard');
  • or - even easier - wrap your existing Logger as follows:
    new JobRunrDashboardLogger(LoggerFactory.getLogger(MyService.class))

The last logger will make sure that all info, warn and error statement will be shown in the dashboard for each job. Debug logging is not supported as I want to prevent to spam the various browsers.

Progress bar for jobs

Long running jobs take time - and sometimes you need to know how long a job will take. Thanks to the new progress bar in JobRunr, you can now track progress from within the dashboard - a progress bar will appear automatically just below the ‘Processing job’ header and advance while work is progressing.

To use this feature, you will need to inject the JobContext into your job: BackgroundJob.enqueue(() -> myService.doWork(JobContext.Null)).

Inside your actual job, you can then use the JobContext to create a progress bar:

public class MyService {

	public void doWork(JobContext jobContext) {
    	JobDashboardProgressBar progressBar = jobContext.progressBar(1000);
        
        for(int i = 0; i < 1000; i++) {
        	//do actual work
            progressBar.increaseByOne();
            // or you can also use
            progressBar.setValue(i);
        }
    }
}

A picture says more than a 1000 words

Watch logging appear live from your actual job

Other improvements

  • GitHub issue 8: dashboard not visible if not background job servers available.
  • GitHub issue 9: you will now be redirected immediately to the dashboard
  • GitHub issue 11: the lambda you enqueue can now return a result (though you won’t be able to do anything with it)
  • GitHub issue 13: added option to set the amount of workers via the Fluent API
  • GitHub issue 15: jobs that were processing while a background job server crashed are now being picked up by another server
  • GitHub issue 17: all jobs can now be deleted
  • GitHub issue 19: an exception while adding/removing listeners has been solved

The JobRunr Blog

Everything you need to know about
background processing

Explore technical deep-dives, product updates, and real-world examples to help you build, scale, and monitor your Java background jobs.

blog image

May 17, 2022

JobRunr Pro increases developer productivity

JobRunr Pro increases developer productivity as developers are less interrupted by first line support.

Read More Details
blog image

November 12, 2025

Why We Ran the Numbers: Benchmarking JobRunr vs. Quartz on Postgres

We benchmarked JobRunr Pro against Quartz on Postgres. The results are in: JobRunr is 18 times faster, processing 500,000 jobs with a fraction of the database load.

Read More Details
blog image

December 6, 2022

JobRunr in the media

Did you already know that JobRunr is featured on Thoughtworks technology radar?

Read More Details
call to action

Ready to build reliable background jobs?

You focus on your business logic. We’ll take care of scheduling your background jobs reliably.

Get Started with JobRunr