private void cancelSchedule(JobKey jobKey) { try { if (!scheduler.deleteJob(jobKey)) { logger.warn("The job belonging to this token could not be deleted."); } } catch (SchedulerException e) { throw new DeadlineException("An error occurred while cancelling a timer for a deadline manager", e); } }
@Override public void cancelAll(String deadlineName) { runOnPrepareCommitOrNow(() -> { try { scheduler.getJobKeys(GroupMatcher.groupEquals(deadlineName)) .forEach(this::cancelSchedule); } catch (SchedulerException e) { throw new DeadlineException("An error occurred while cancelling a timer for a deadline manager", e); } }); }
@Override public void run() { if (logger.isDebugEnabled()) { logger.debug("Triggered deadline"); } try { Instant triggerInstant = GenericEventMessage.clock.instant(); UnitOfWork<DeadlineMessage<?>> unitOfWork = new DefaultUnitOfWork<>( new GenericDeadlineMessage<>(deadlineName, deadlineMessage, () -> triggerInstant)); unitOfWork.attachTransaction(transactionManager); InterceptorChain chain = new DefaultInterceptorChain<>(unitOfWork, handlerInterceptors(), deadlineMessage -> { executeScheduledDeadline(deadlineMessage, deadlineScope); return null; }); ResultMessage<?> resultMessage = unitOfWork.executeWithResult(chain::proceed); if (resultMessage.isExceptional()) { Throwable e = resultMessage.exceptionResult(); throw new DeadlineException(format("An error occurred while triggering the deadline %s %s", deadlineName, deadlineId), e); } } finally { scheduledTasks.remove(new DeadlineId(deadlineName, deadlineId)); } }
@Override public String schedule(Instant triggerDateTime, String deadlineName, Object messageOrPayload, ScopeDescriptor deadlineScope) { DeadlineMessage<Object> deadlineMessage = asDeadlineMessage(deadlineName, messageOrPayload); String deadlineId = JOB_NAME_PREFIX + deadlineMessage.getIdentifier(); runOnPrepareCommitOrNow(() -> { DeadlineMessage interceptedDeadlineMessage = processDispatchInterceptors(deadlineMessage); try { JobDetail jobDetail = buildJobDetail(interceptedDeadlineMessage, deadlineScope, new JobKey(deadlineId, deadlineName)); scheduler.scheduleJob(jobDetail, buildTrigger(triggerDateTime, jobDetail.getKey())); } catch (SchedulerException e) { throw new DeadlineException("An error occurred while setting a timer for a deadline", e); } }); return deadlineId; }
private void cancelSchedule(JobKey jobKey) { try { if (!scheduler.deleteJob(jobKey)) { logger.warn("The job belonging to this token could not be deleted."); } } catch (SchedulerException e) { throw new DeadlineException("An error occurred while cancelling a timer for a deadline manager", e); } }
private void cancelSchedule(JobKey jobKey) { try { if (!scheduler.deleteJob(jobKey)) { logger.warn("The job belonging to this token could not be deleted."); } } catch (SchedulerException e) { throw new DeadlineException("An error occurred while cancelling a timer for a deadline manager", e); } }
/** * Initializes QuartzDeadlineManager with given {@code scheduler} and {@code scopeAwareProvider} which will load * and send messages to {@link org.axonframework.messaging.Scope} implementing components. Uses the given {@code * serializer} for serializing the deadline message and scope in to the {@link JobDataMap}. * * @param scheduler A {@link Scheduler} used for scheduling and triggering purposes * @param scopeAwareProvider a {@link List} of {@link ScopeAware} components which are able to load and send * Messages to components which implement {@link org.axonframework.messaging.Scope} * @param transactionManager A {@link TransactionManager} which builds transactions and ties them to deadline * @param serializer The {@link Serializer} which will be used to de-/serialize the {@link DeadlineMessage} * and the {@link ScopeDescriptor} into the {@link JobDataMap} */ public QuartzDeadlineManager(Scheduler scheduler, ScopeAwareProvider scopeAwareProvider, TransactionManager transactionManager, Serializer serializer) { this.scheduler = scheduler; this.scopeAwareProvider = scopeAwareProvider; this.transactionManager = transactionManager; this.serializer = serializer; try { initialize(); } catch (SchedulerException e) { throw new DeadlineException("Unable to initialize quartz scheduler", e); } }
@Override public void cancelAll(String deadlineName) { runOnPrepareCommitOrNow(() -> { try { scheduler.getJobKeys(GroupMatcher.groupEquals(deadlineName)) .forEach(this::cancelSchedule); } catch (SchedulerException e) { throw new DeadlineException("An error occurred while cancelling a timer for a deadline manager", e); } }); }
@Override public void cancelAll(String deadlineName) { runOnPrepareCommitOrNow(() -> { try { scheduler.getJobKeys(GroupMatcher.groupEquals(deadlineName)) .forEach(this::cancelSchedule); } catch (SchedulerException e) { throw new DeadlineException("An error occurred while cancelling a timer for a deadline manager", e); } }); }
@Override public void schedule(Instant triggerDateTime, String deadlineName, Object messageOrPayload, ScopeDescriptor deadlineScope, String scheduleId) { runOnPrepareCommitOrNow(() -> { DeadlineMessage deadlineMessage = asDeadlineMessage(deadlineName, messageOrPayload); try { JobDetail jobDetail = buildJobDetail(deadlineMessage, deadlineScope, new JobKey(scheduleId, deadlineName)); scheduler.scheduleJob(jobDetail, buildTrigger(triggerDateTime, jobDetail.getKey()), true); } catch (SchedulerException e) { throw new DeadlineException("An error occurred while setting a timer for a deadline", e); } }); }
@Override public void run() { if (logger.isDebugEnabled()) { logger.debug("Triggered deadline"); } try { Instant triggerInstant = GenericEventMessage.clock.instant(); UnitOfWork<DeadlineMessage<?>> unitOfWork = new DefaultUnitOfWork<>( new GenericDeadlineMessage<>(deadlineName, deadlineMessage, () -> triggerInstant)); unitOfWork.attachTransaction(transactionManager); InterceptorChain chain = new DefaultInterceptorChain<>(unitOfWork, handlerInterceptors(), deadlineMessage -> { executeScheduledDeadline(deadlineMessage, deadlineScope); return null; }); ResultMessage<?> resultMessage = unitOfWork.executeWithResult(chain::proceed); if (resultMessage.isExceptional()) { Throwable e = resultMessage.exceptionResult(); throw new DeadlineException(format("An error occurred while triggering the deadline %s %s", deadlineName, deadlineId), e); } } finally { scheduledTasks.remove(new DeadlineId(deadlineName, deadlineId)); } }
@Override public String schedule(Instant triggerDateTime, String deadlineName, Object messageOrPayload, ScopeDescriptor deadlineScope) { DeadlineMessage<Object> deadlineMessage = asDeadlineMessage(deadlineName, messageOrPayload); String deadlineId = JOB_NAME_PREFIX + deadlineMessage.getIdentifier(); runOnPrepareCommitOrNow(() -> { DeadlineMessage interceptedDeadlineMessage = processDispatchInterceptors(deadlineMessage); try { JobDetail jobDetail = buildJobDetail(interceptedDeadlineMessage, deadlineScope, new JobKey(deadlineId, deadlineName)); scheduler.scheduleJob(jobDetail, buildTrigger(triggerDateTime, jobDetail.getKey())); } catch (SchedulerException e) { throw new DeadlineException("An error occurred while setting a timer for a deadline", e); } }); return deadlineId; }