An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.
We are excited to announce the release of JobRunr v7.0.0 and JobRunr Pro v7.0.0. This major release is now available via Maven Central and directly for our Pro subscribers through the customer portal. Building on our promise to deliver robust job scheduling solutions, v7.0.0 brings a suite of powerful new features, substantial performance enhancements, and critical dashboard improvements. Letβs delve into what makes this release a game-changer for developers and enterprises alike for both JobRunr Pro and JobRunr OSS!
π We'd also like to thank all of the developers and companies who have beta tested JobRunr v7 beta's and release candidates.
ConcurrentJobRateLimiter
and the SlidingTimeWindowRateLimiter
. PR #202
JobIdentifier
. PR #285 (fixes #236)BackgroundJobServer
shutdown period configurable. PR #297 (fixes #288)DoNotRetryPolicy
for individual jobs and exceptions. PR #303
InMemoryStorageProvider
now allows for a pollInterval as small as 200ms (useful for testing purposes). PR #909 (fixes #619)FixedSizeWorkerPoolDynamicQueuePolicy
. PR #237
JobFilter
. PR #251 (fixes #239)deleteAt
hint. PR #257
JobServerFilter
to get notified on job progress. PR #282
select for update skip locked
if the database supports it. PR #904
SCHEDULED
jobs at the same pollInterval
. PR #273
StorageProvider
and cleanup deprecated methods. PR #893
MigrateFromV5toV6Task
related RecurringJobs
migration. PR #238
BackgroundJobServer
. PR #272
enqueueOrReplace
and scheduleOrReplace
now also update server tags PR #267 (fixes #164)ApplyStateFilter
is called before save resulting in multiple calls to onStateApplied
. PR #903 (fixes #902)JobServerFilter.onProcessingFailed
is not called when a job orphans (e.g. if background job server dies). PR #921 (fixes #920)IllegalStateException
: Can not find variable 3 in stack. PR #941, PR #945 (fixes #942)CronExpression.validateSchedule()
does not correctly check for interval size. PR #859 (fixes #858)@Recurring
has been moved to core org.jobrunr.jobs.annotations.Recurring
and uses enums instead of booleans. The attributes paused
and scheduleJobsSkippedDuringDowntime
now use an enum instead of a boolean. This allows us to keep the paused state of a Recurring job even if you redeploy (default) whereas in the past, on redeploy, the Job would be started automatically again. If paused
is put to false in the @Recurring
, the Recurring job will start on redeploy even if it was paused before via the dashboardJobScheduler.delete(String id)
has been renamed to JobScheduler.deleteRecurringJob(String id)
StorageProvider
has been updated and is not backwards compatible as is the Page
and PageRequest
. A new class org.jobrunr.storage.Paging
was added where all utility methods regarding Paging have been collectedRedisStorageProvider
and the ElasticSearchStorageProvider
in JobRunr Pro. JobRunr 7 OSS will be the last to support it.JobContext.getSignature()
has been renamed to JobContext.getJobSignature()
JobDashboardProgressBar.setValue(...)
has been renamed to JobDashboardProgressBar.setProgress(long succeededAmount)
BatchJob
s logic has been rewritten, make sure MigrateFromV6toV7Task
is rundynamic-queues.type
has been removed, instead the type is now part of the dynamic queues property keys, e.g., org.jobrunr.jobs.dynamic-queue.round-robin.label-prefix
(please adapt to your framework)select for update skip locked
if the database supports it PR #904:JobContext
. PR #969 (fixes #286)ApplyStateFilter
is called before save resulting in multiple calls to onStateApplied
. PR #903 (fixes #902)JobServerFilter.onProcessingFailed
is not called when a job orphans (e.g. if background job server dies). PR #921 (fixes #920)IllegalStateException
: Can not find variable 3 in stack. PR #941, PR #945 (fixes #942)CronExpression.validateSchedule()
does not correctly check for interval size. PR #859 (fixes #858)@Recurring
has been moved to core org.jobrunr.jobs.annotations.Recurring
JobScheduler.delete(String id)
has been renamed to JobScheduler.deleteRecurringJob(String id)
StorageProvider
has been updated and is not backwards compatible as is the Page
and PageRequest
. A new class org.jobrunr.storage.Paging
was added where all utility methods regarding Paging have been collectedRedisStorageProvider
and the ElasticSearchStorageProvider
. JobRunr 7 will be the last to support it.JobContext.getSignature()
has been renamed to JobContext.getJobSignature()
JobDashboardProgressBar.setValue(...)
has been renamed to JobDashboardProgressBar.setProgress(long succeededAmount)
We thank the following contributors for their help with JobRunr v7!
Try it out now and let us know your feedback! Your input is very important, so we can provide you smooth v7.0.0 JobRunr!
Best,
Friends of developers
The JobRunr Team
π We'd like to thank all of you testing JobRunr v7 so far.
π£ JobRunr v7 will be officially released on the 9th of April. Join the webinar to celebrate this major release with us. It's also the opportunity hear from you! We'll do our best to address any questions, remarks or suggestions you have.
π please be aware that we are still in the process of updating our documentation.
BackgroundJobServer
#969 and #973
JobContext
#969
LettuceConnectionFactory
to get RedisClient
JobContext.getSignature()
has been renamed to JobContext.getJobSignature()
Full Changelog: https://github.com/jobrunr/jobrunr/compare/v7.0.0-RC.0...v7.0.0-RC.1
π please be aware that we are still in the process of updating our documentation.
ConcurrentModificationExceptions
. #904ApplyStateFilter
is called before save resulting in multiple calls to onStateApplied
., issue #902, PR #903JobServerFilter.onProcessingFailed
is not called when a job orphans (e.g. if background job server dies). Issue #920, PR #921IllegalStateException
: Can not find variable 3 in stack. Issue #942, PRs #941, #945CronExpression.validateSchedule()
does not correctly check for interval size. Issue #858, PR #859@Recurring
has been moved to core org.jobrunr.jobs.annotations.Recurring
JobScheduler.delete(String id)
has been renamed to JobScheduler.deleteRecurringJob(String id)
StorageProvider
has been updatedPage
and PageRequest
have been updatedJobDashboardProgressBar.setValue(...)
has been renamed to JobDashboardProgressBar.setProgress(long succeededAmount)
We thank the following contributors for their help with JobRunr v7!
None
A big shoutout and thank you π to @tms0 for his help with Quarkus and JobRunr. It's thanks to him that you can run configure JobRunr in Quarkus at runtime.
A big shoutout and thank you π to @tms0 for his help with Quarkus and JobRunr. It's thanks to him that you can run JobRunr in Quarkus using GraalVM Native Mode .
None
I'm pleased to announce the release of JobRunr v6.3.0 (which is now available via Maven Central) and JobRunr Pro v6.3.0 which is available for customers with a subscription.
Since the 6.2.0 release, we did some performance improvements related to the dashboard resulting in less calls to the JobRunr rest API and we also did stability improvements which should result in less SevereJobRunrExceptions
. This release adds support for Micronaut 4 and Kotlin 1.9.
In JobRunr Pro, we added Observability support, added the option to set a Job
time-out, users can now sort the jobs in the dashboard and we improved the RetryPolicy
which now also allows to specify a custom amount of retries per Exception
.
And last but not least, all dependencies were also updated.
I also want to shoutout to Sergi Almar who improved the spring-boot-starter
and Geir Sagberg who fixed a bug in the dashboard for their contributions. You have my eternal π.
Although the JobRunr Pro Dashboard gives instant insights how your jobs are doing, you may already have an observability platform like Jaeger, HoneyComb or New Relic running inside your organization. JobRunr Pro now out-of-the box integrates with many of these observability platforms so you can keep on top of things. This means you can now see how long your different Job instances take and where a job spends the most time right from your existing observability platform.
A Job
time-out is exactly what you think it is - specify it when creating a Job
and if the Job
is processing longer than the given time-out, JobRunr will automatically interrupt it.
BackgroundJobServers
start.