Java 如何在指定的出现次数后停止quartz cron调度程序?
我有一个要求,用户可以设置一个结束日期,或可以设置一个特定的次数,然后停止任何作业 比如, 考虑到我必须发送短信到一个特定的号码,这应该从现在开始,短信将在每5分钟发送 现在,根据用户的选择,上述作业将在特定时间停止,或在n次出现后停止 我使用的是石英的cron调度程序 现在在一个特定的日期和时间停止它是很容易的,我已经这样做了如下方式Java 如何在指定的出现次数后停止quartz cron调度程序?,java,cron,quartz-scheduler,Java,Cron,Quartz Scheduler,我有一个要求,用户可以设置一个结束日期,或可以设置一个特定的次数,然后停止任何作业 比如, 考虑到我必须发送短信到一个特定的号码,这应该从现在开始,短信将在每5分钟发送 现在,根据用户的选择,上述作业将在特定时间停止,或在n次出现后停止 我使用的是石英的cron调度程序 现在在一个特定的日期和时间停止它是很容易的,我已经这样做了如下方式 trigger = TriggerBuilder.newTrigger() .startAt(s
trigger = TriggerBuilder.newTrigger()
.startAt(startDateObj)
.endAt(endDate)
.withIdentity(uniqueID, "group1")
.withSchedule(
CronScheduleBuilder.cronSchedule(cronString)
)
.build();
但是,如果在n次事件发生后我必须停止它,该怎么办?我知道它可以通过简单的时间表来完成,比如
simpleSchedule().withRepeatCount(1).withIntervalInSeconds(15)
但是如何对cron调度器执行同样的操作呢?由于某些原因,我不能转换到除cron之外的任何其他类型的计划
任何帮助对我都会很好
如果需要更多数据,请告诉我
提前感谢。您可以使用
computendtimetoallowparticularnumberoffirings()
方法计算结束日期。(尽管是这个名字!)。
请参见以下示例:
CronTrigger=new trigger()
.Withintity(“某些id”)
.withSchedule(buildCronScheduler(“some\u cron\u exp”))
.build();
Date endDate=TriggerUtils.computeEndTime允许特定数量的字符串(
(可操作触发器)触发器,
新的BaseCalendar(Calendar.getInstance().getTimeZone()),
重复计数);
trigger=trigger.getTriggerBuilder().endAt(endDate.build();
不幸的是,没有直接的方法可以做到这一点。重复计数设置与SimpleTrigger接口相关,该接口不是CronTrigger的父接口。CrontTriggerImpl类不实现SimpleTrigger接口。正如您已经确定的,解决方法是根据重复次数计算结束日期,并以这种方式进行处理。或者,您可以跟踪作业执行的次数(可能在JobDataMap中),然后让作业在完成最后一次所需执行时移除触发器。感谢您将计数存储到JobDataMap idea中:D.早些时候,我正在考虑将数据存储到数据库中。