我需要根据请求的cron表达式和时区触发Job。 例如: 每个星期一上午9点触发报告发送工作。用户时区的tue。 该工作实际上应该从8:45(报告创建的缓冲区)开始,并且应该在上午9点触发cron以传递报告。
获取TimeZone交付时间的代码。
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity(UUID.randomUUID().toString(), "group1")
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression).inTimeZone(TimeZone.getTimeZone(userTimezone)))
.build();
我得到了交货时间
Date deliveryTime = trigger.getFireTimeAfter(trigger.getStartTime());
并通过扣除缓冲时间来创建新作业。
Date processingTime = DateUtils.addMinutes(deliveryTime, -delayMinutes);
Trigger processTrigger = TriggerBuilder
.newTrigger()
.withIdentity(UUID.randomUUID().toString(), "newJob")
.startAt(processingTime)
.build();
上述触发器仅对触发器对象必须使用触发器对象的后续天数的一个触发器有用,然后调度新的触发器
有什么方法可以安全地从cron表达式中扣除缓冲时间,并使用新的cron表达式设置触发器。