Some small and incremental releases which added the following new features:

  • InMemoryStorageProvider: a new InMemoryStorageProvider is available. When you choose this StorageProvider, do note that you cannot scale horizontally. If you however have some lightweight and instance-specific jobs where persistence is not important, you can use the InMemoryStorageProvider.
  • Redis: I received feedback of performance problems with Redis/Jedis. Release v0.9.15 tries to mitigate these.
    I also plan to migrate from Jedis to Lettuce.
  • JobRunrDashboardWebServer: a feature request was made to not start the dashboard server automatically and this is now consistent as how the BackgroundJobServer is started. The reason for this is that when you are using the Spring configuration style, you can now have one jar, which based on an environment variable starts the dashboard server or not. See also the breaking change below.
  • Streaming API: JobRunr now supports an easier streaming API using method references. This means you now have the following options available:
// lambda
BackgroundJob.<UserService, Long>enqueue(allAccounts.stream().map(UserAccount::getId), (service, id) -> service.printSingle(id));

// method reference
BackgroundJob.<UserService, Long>enqueue(allAccounts.stream().map(UserAccount::getId), UserService::printSingle);

Breaking change

This release contains a breaking change where the JobRunrDashboardWebServer does not start automatically if you are using the configuration using beans. The way to start it now is:

@Bean
public JobRunrDashboardWebServer dashboardWebServer(StorageProvider storageProvider, JsonMapper jsonMapper) {
    final JobRunrDashboardWebServer jobRunrDashboardWebServer = new JobRunrDashboardWebServer(storageProvider, jsonMapper);
    jobRunrDashboardWebServer.start();
    return jobRunrDashboardWebServer;
}