Quartz创建多个不同的scheduler实例

发布于 2021-11-30 03:11:07 字数 5899 浏览 924 评论 8

@自风 你好,想跟你请教个问题:

您好,我遇到了这个问题,有多个任务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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

能否归途做我良人 2021-12-05 14:25:05

原来的那个还没弄懂,重新换会有点麻烦,不过你推荐的这个看见很高大上,有时间了一定学习一下

嘦怹 2021-12-05 14:20:47

可以参考一下#xxl-job#啊

噩梦成真你也成魔 2021-12-05 14:20:28

回复
我的tWarncode是传进来的参数,是主键唯一,这个应该没问题

沦落红尘 2021-12-05 14:08:20

回复
Scheduler tScheduler = new StdSchedulerFactory().getScheduler(); tScheduler 实例不用start是嘛?,任务直接注册到tScheduler 其中就可以了吗?

只为守护你 2021-12-05 03:44:59

你好,我再一个问题,比如现在有几个任务正在运行,然后我增加一个任务,然后需要增加的这个任务也运行起来,怎么弄吧,

不再见 2021-12-05 02:39:17

回复
源码都发给你了 创建 暂停 回复 删除 都有 自己看吧

可是我不能没有你 2021-12-04 18:29:44

回复
非常感谢

哑剧 2021-12-04 15:22:27

scheduler.pauseJob(JobKey.jobKey(jobName));

scheduler.deleteJob(JobKey.jobKey(jobName));

每个任务的jobName应该区分开,然后通过jobKey单独控制这些job就行

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文