Quartz创建多个不同的scheduler实例
@自风 你好,想跟你请教个问题:
您好,我遇到了这个问题,有多个任务job,但是只要一个scheduler,停止一个任务时其他任务都会停止,我初学Quartz不是太了解,想做到一个任务对应一个scheduler,互不影响。
麻烦指导一下,谢谢。
Scheduler tScheduler = new StdSchedulerFactory().getScheduler();
for (int i = 1; i <= tset.size(); i++) {
String[] tCron = new String[]{"*", "*", "*", "*", "*", "?"};
String tCronStr = "";
String tWarncode = tSchema.getWARNCODE();
String tWarnname = tSchema.getWARNNAME();
String tJdbcname = tSchema.getJDBCNAME();//=============
int tType = tSchema.getWARNTIMESTYPE();
int tDesc = tSchema.getWARNTIMESDESC();
if (tType <= 6) {
//flag=1
tCron[tType] = "0/" + tDesc;
for (int j = 0; j < 6; j++) {
if (j < tType) {
tCronStr += "0 ";
} else {
tCronStr += tCron[j] + " ";
}
}
JobDetail job = JobBuilder.newJob().ofType(WarnLogsQuery.class).withIdentity("job" + tWarncode,"group" + tWarncode).build();
job.getJobDataMap().put("warncode", tWarncode);
job.getJobDataMap().put("warnname", tWarnname);
job.getJobDataMap().put("jdbcname", tJdbcname);
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger" + tWarncode,"group" + tWarncode).startNow()
.withSchedule(CronScheduleBuilder
.cronSchedule(tCronStr))//====
.build();
tScheduler.scheduleJob(job, trigger);
} else {
tScheduler.shutdown();
System.out.println("无启用执行预警计划!");
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
原来的那个还没弄懂,重新换会有点麻烦,不过你推荐的这个看见很高大上,有时间了一定学习一下
可以参考一下#xxl-job#啊
回复
我的tWarncode是传进来的参数,是主键唯一,这个应该没问题
回复
Scheduler tScheduler = new StdSchedulerFactory().getScheduler(); tScheduler 实例不用start是嘛?,任务直接注册到tScheduler 其中就可以了吗?
你好,我再一个问题,比如现在有几个任务正在运行,然后我增加一个任务,然后需要增加的这个任务也运行起来,怎么弄吧,
回复
源码都发给你了 创建 暂停 回复 删除 都有 自己看吧
回复
非常感谢
scheduler.pauseJob(JobKey.jobKey(jobName));
scheduler.deleteJob(JobKey.jobKey(jobName));
每个任务的jobName应该区分开,然后通过jobKey单独控制这些job就行