Class JobRunrDeadlineManager
- All Implemented Interfaces:
DeadlineManager
DeadlineManager that delegates scheduling and triggering to a JobRunr
JobScheduler.
Each deadline is stored as a JobRunr job calling execute(String, String) on this manager, with the
deadline's DeadlineDetails in their stored form as the first argument. The details keep the layout of Axon
Framework 4.13, so that jobs scheduled by Axon Framework 4 fire here, and jobs scheduled here fire on Axon Framework
4 nodes sharing JobRunr's storage. The details and the deadline's payload, metadata and scope descriptor are
converted with the configured Converter, which has to match the serializer the Axon Framework 4 deadline
manager used.
A fired deadline runs in a unit of work from the configured UnitOfWorkFactory, with the registered handler
interceptors around its delivery to the ScopeAware components of the
ScopeAwareProvider. A failing delivery fails the job, which JobRunr then retries.
cancelAll(String) and cancelAllWithinScope(String, ScopeDescriptor) are not supported, as they need
JobRunr Pro. Keep the identifier schedule(Instant, String, Object, ScopeDescriptor) returns to cancel a
deadline with cancelSchedule(String, String) instead.
JobRunrDeadlineManager deadlineManager =
JobRunrDeadlineManager.builder()
.jobScheduler(jobScheduler)
.scopeAwareProvider(scopeAwareProvider)
.unitOfWorkFactory(configuration.getComponent(UnitOfWorkFactory.class))
.converter(new JacksonConverter())
.build();
- Since:
- 4.7.0
- Author:
- Tom de Backer, Gerard Klijs, Jakob Hatzl
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder class to instantiate aJobRunrDeadlineManager. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final StringThe reason JobRunr records for a job deleted throughcancelSchedule(String, String). -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedInstantiate aJobRunrDeadlineManagerbased on the fields contained in theJobRunrDeadlineManager.Builder. -
Method Summary
Modifier and TypeMethodDescriptionbuilder()Instantiate a Builder to be able to create aJobRunrDeadlineManager.voidCancels all the deadlines corresponding to the givendeadlineName.voidcancelAllWithinScope(String deadlineName, ScopeDescriptor scope) Cancels all deadlines corresponding to the givendeadlineNameandscope.voidcancelSchedule(String deadlineName, String scheduleId) Cancels the deadline corresponding to the givendeadlineName/scheduleIdcombination.voidDeprecated.Kept so that jobs scheduled through this signature still fire.voidThis method is called by JobRunr when a deadline fires.schedule(Instant triggerDateTime, String deadlineName, @Nullable Object messageOrPayload, ScopeDescriptor deadlineScope) Schedules a deadline at giventriggerDateTimewith provided context.voidshutdown()Shuts down this deadline manager.Methods inherited from class org.axonframework.deadline.AbstractDeadlineManager
asDeadlineMessage, dispatchInterceptors, handlerInterceptors, processDispatchInterceptors, registerDispatchInterceptor, registerHandlerInterceptor, runOnPrepareCommitOrNowMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.axonframework.deadline.DeadlineManager
cancelAllWithinScope, schedule, schedule, schedule, schedule, schedule
-
Field Details
-
DELETE_REASON
The reason JobRunr records for a job deleted throughcancelSchedule(String, String).- See Also:
-
-
Constructor Details
-
JobRunrDeadlineManager
Instantiate aJobRunrDeadlineManagerbased on the fields contained in theJobRunrDeadlineManager.Builder.Will assert that the
JobScheduler,ScopeAwareProvider,UnitOfWorkFactoryandConverterare notnull, and will throw anAxonConfigurationExceptionif any of them isnull.- Parameters:
builder- theJobRunrDeadlineManager.Builderused to instantiate aJobRunrDeadlineManagerinstance
-
-
Method Details
-
builder
Instantiate a Builder to be able to create aJobRunrDeadlineManager.The
JobScheduler,ScopeAwareProvider,UnitOfWorkFactoryandConverterare hard requirements and as such should be provided.- Returns:
- a Builder to be able to create a
JobRunrDeadlineManager
-
schedule
public String schedule(Instant triggerDateTime, String deadlineName, @Nullable Object messageOrPayload, ScopeDescriptor deadlineScope) Description copied from interface:DeadlineManagerSchedules a deadline at giventriggerDateTimewith provided context. The returnedscheduleIdand provideddeadlineNamecombination can be used to cancel the scheduled deadline.The given
messageOrPayloadmay be any object, as well as a DeadlineMessage. In the latter case, the instance provided is the donor for the payload andMetadataof the actual deadline being used. In the former case, the givenmessageOrPayloadwill be wrapped as the payload of aDeadlineMessage.- Parameters:
triggerDateTime- aInstantdenoting the moment to trigger the deadline handlingdeadlineName- aStringrepresenting the name of the deadline to schedulemessageOrPayload- aMessageor payload for a message as anObjectdeadlineScope- aScopeDescriptordescribing the scope within which the deadline was scheduled- Returns:
- the
scheduleIdas aStringto use when cancelling the schedule
-
cancelSchedule
Description copied from interface:DeadlineManagerCancels the deadline corresponding to the givendeadlineName/scheduleIdcombination. This method has no impact on deadlines which have already been triggered. -
cancelAll
Cancels all the deadlines corresponding to the givendeadlineName. This method has no impact on deadlines which have already been triggered.- Parameters:
deadlineName- aStringrepresenting the name of the deadlines to cancel- Throws:
UnsupportedOperationException- always, as cancelling by deadline name needs JobRunr Pro
-
cancelAllWithinScope
Cancels all deadlines corresponding to the givendeadlineNameandscope. This method has no impact on deadlines which have already been triggered.- Parameters:
deadlineName- aStringrepresenting the name of the deadlines to cancelscope- aScopeDescriptordescribing the scope within which the deadline was scheduled- Throws:
UnsupportedOperationException- always, as cancelling byScopeneeds JobRunr Pro
-
execute
Deprecated.Kept so that jobs scheduled through this signature still fire. New jobs callexecute(String, String).This method is called by JobRunr for jobs scheduled by Axon Framework 4 before it passed the deadline identifier. It fires the deadline asexecute(String, String)does.- Parameters:
serializedDeadlineDetails- the storedDeadlineDetailsof the deadline to fire
-
execute
This method is called by JobRunr when a deadline fires. It converts the storedDeadlineDetailsback into the deadline, and delivers it to the components resolving its scope.The signature stays exactly as in Axon Framework 4, as JobRunr stores the call to this method with every job.
- Parameters:
serializedDeadlineDetails- the storedDeadlineDetailsof the deadline to firedeadlineId- the identifier of the deadline, which JobRunr uses as the job's identifier- Throws:
DeadlineException- if delivering the deadline failed, so that JobRunr retries the job
-
shutdown
public void shutdown()Shuts down this deadline manager.The configuration calls this method for every
DeadlineManagerit holds when the application shuts down, through theDeadlineManagerLifecycleConfigurationEnhancer. As the method may be called more than once, for example by Spring as the destroy method it infers for a@Bean, implementations have to allow repeated calls: every call after the first has no effect.Shuts down the
JobScheduleronce. As that shuts down JobRunr as a whole, every further call has no effect.
-