@CommandHandler public MyAggregate(CreateMyAggregateCommand command, DeadlineManager deadlineManager) { apply(new MyAggregateCreatedEvent(command.id)); String deadlineName = "deadlineName"; String deadlineId = deadlineManager.schedule( Duration.ofMillis(DEADLINE_TIMEOUT), deadlineName, new DeadlinePayload(command.id) ); if (command.cancelBeforeDeadline) { deadlineManager.cancelSchedule(deadlineName, deadlineId); } }
@StartSaga @SagaEventHandler(associationProperty = "id") public void on(SagaStartingEvent sagaStartingEvent, DeadlineManager deadlineManager) { String deadlineName = "deadlineName"; String deadlineId = deadlineManager.schedule( Duration.ofMillis(DEADLINE_TIMEOUT), deadlineName, new DeadlinePayload(sagaStartingEvent.id) ); if (sagaStartingEvent.isCancelBeforeDeadline()) { deadlineManager.cancelSchedule(deadlineName, deadlineId); } }