Java SchedulerFactory的单个实例可以有多少个触发器?
我的应用程序每天可能触发1000个或更多的触发器。其中每一项都分为4类:Java SchedulerFactory的单个实例可以有多少个触发器?,java,quartz-scheduler,Java,Quartz Scheduler,我的应用程序每天可能触发1000个或更多的触发器。其中每一项都分为4类: 上午(上午九时) 下午(下午1时) 晚上(下午六时) 晚上(晚上10时) 每一次,都会有100次的触发。下面是代码 SchedulerFactory schdFact = new StdSchedulerFactory(); Scheduler schd; for(ecah morningSchedulers){ // some logic for instantiating trigger AbstractT
- 上午(上午九时)
- 下午(下午1时)
- 晚上(下午六时)
- 晚上(晚上10时)
SchedulerFactory schdFact = new StdSchedulerFactory();
Scheduler schd;
for(ecah morningSchedulers){
// some logic for instantiating trigger
AbstractTrigger trigger = (AbstractTrigger) newTrigger().withSchedule(cronSchedule("0 0"+mAlert+"0,0,0 * * ?")).build();
trigger.setStartTime(strtDat);
trigger.setEndTime(endDat);
final JobDetail job = newJob(AlertJob.class).build();
schd.scheduleJob(job, trigger);
}
我这里有两个问题
如果你有数千个<强>触发器>(你不混淆触发器和触发执行?),考虑JDBC存储。但如果您只有很少的触发器,但每天运行几次,RAM存储就足够了
我应该为循环实例化内部调度程序还是外部调度程序,并将多个触发器调度到同一个调度程序 对于整个应用程序,肯定只有一个调度程序。一个应用程序中很少有多个计划程序,请参阅: 创建一次调度程序并将其视为单例 我必须重新安排一些触发器。i、 e.在某些情况下停止,然后重新开始 文档中再次解释了这一点:。基本上,您需要知道触发键:// retrieve the trigger
Trigger oldTrigger = sched.getTrigger(triggerKey("oldTrigger", "group1");
// obtain a builder that would produce the trigger
TriggerBuilder tb = oldTrigger.getTriggerBuilder();
// update the schedule associated with the builder, and build the new trigger
// (other builder methods could be called, to change the trigger in any desired way)
Trigger newTrigger = tb.withSchedule(simpleSchedule()
.withIntervalInSeconds(10)
.withRepeatCount(10)
.build();
sched.rescheduleJob(oldTrigger.getKey(), newTrigger);
顺便说一句,如果只想在给定的一小时内运行作业,有一个更简单的API。而不是:
newTrigger().
withSchedule(
cronSchedule("0 0"+mAlert+"0,0,0 * * ?")
).
build()
你可以简单地说:
newTrigger().
withSchedule(
dailyAtHourAndMinute(mAlert, 42)
).
build();
请查看官方教程的链接。谢谢链接。是的,我有数千个触发器。你所说的触发器和触发器执行是什么意思?我的应用程序将在我定义的这4次向患者发送短信。每个使用者都有几个处方。每个处方都有开始和结束日期。所以在这种情况下,我必须启动几个触发器,对吗?因为它们各自有不同的数据,唯一的相似之处是时间(上午9点、下午1点、下午5点和晚上10点)。那么,我必须将这些触发器存储在数据库或其他什么地方吗?这就是你所说的jdbc存储。这对我有什么帮助?@Preethi:当你接触到数十万名患者时,触发器会占用大量的内存。此外,您还必须记住重新启动后如何重新创建触发器。如果你的申请在这段时间内被拒绝了呢?你的一般方法是很好的,但考虑只有4个触发(每小时一个),并发送批次短信给所有患者,应在一个特定的时间服药。这可能会扩展得更好。