【发布时间】:2021-08-10 14:21:14
【问题描述】:
我有一个简单的触发器来触发一个简单的工作(假设 - 发送一封电子邮件)。
我的触发器:
return newTrigger()
.withIdentity(name, group)
.withSchedule(
simpleSchedule()
.withMisfireHandlingInstructionNextWithExistingCount()
)
.startAt(triggerStartTime)
.usingJobData(JobDataMap(triggerData))
.withDescription(description)
.build()
但是,假设该服务在triggerStartTime 触发时不可用(我刚刚关闭了数据库和我的服务)。一段时间后,当我再次运行我的服务时 - 在日志中我看到,触发器已执行。
UPD #1:
当我创建应该在下一分钟开始的简单触发器时,它会重现,之后我关闭所有环境(app + db),然后在触发器应该触发的那一分钟内打开它。检查它:
- 16:00:00 创建应在 16:01:00 触发的触发器
- 关闭所有环境
- 等待 16:01:59
- 打开电源并观察触发火灾
但如果我在 16:02:00 之后打开所有环境,它不会触发触发器。这是非常奇怪的行为。另外,我观察到,在这种情况下,触发器并未从数据库中删除。
【问题讨论】:
-
这似乎是我所期望的行为。您是否使用 JDBC 持久化调度程序?
-
@BoristheSpider 是的
-
@BoristheSpider 我已经更新了问题
标签: java scheduled-tasks quartz-scheduler quartz.net