即使删除了 Quartz 作业,它们仍然会出现。你知道为什么吗?

发布于 2024-10-27 21:51:59 字数 1178 浏览 6 评论 0 原文

我看到调度程序返回相同的作业 (scheduler.getCurrentlyExecutingJobs()),即使在删除它之后 (scheduler.deleteJob(jobExCntxt.getJobDetail().getName(), jobExCntxt.getJobDetail().getGroup()))。我做的事正确吗?我想永远删除该作业和相关线程。这可能吗?

        try {
            List<JobExecutionContext> jobExCntxts = scheduler.getCurrentlyExecutingJobs();
            if(jobExCntxts != null){

                for(JobExecutionContext jobExCntxt: jobExCntxts){
                    if(jobExCntxt != null){
                        Date triggerTime =  DateUtils.addMinutes(jobExCntxt.getTrigger().getPreviousFireTime(), 1);
                        if(triggerTime.before(Calendar.getInstance().getTime())){
                            System.out.println("Deleting a long living job !");

                            System.out.println("Delete return = " + scheduler.deleteJob(jobExCntxt.getJobDetail().getName(), 
                                        jobExCntxt.getJobDetail().getGroup()));
                        }
                    }
                }
            }

        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

I am seeing the scheduler returns the same job (scheduler.getCurrentlyExecutingJobs()) even after deleting it (scheduler.deleteJob(jobExCntxt.getJobDetail().getName(), jobExCntxt.getJobDetail().getGroup())). Am I doing the right thing? I wanted to remove that job and associated threads forever. Is that possible?

        try {
            List<JobExecutionContext> jobExCntxts = scheduler.getCurrentlyExecutingJobs();
            if(jobExCntxts != null){

                for(JobExecutionContext jobExCntxt: jobExCntxts){
                    if(jobExCntxt != null){
                        Date triggerTime =  DateUtils.addMinutes(jobExCntxt.getTrigger().getPreviousFireTime(), 1);
                        if(triggerTime.before(Calendar.getInstance().getTime())){
                            System.out.println("Deleting a long living job !");

                            System.out.println("Delete return = " + scheduler.deleteJob(jobExCntxt.getJobDetail().getName(), 
                                        jobExCntxt.getJobDetail().getGroup()));
                        }
                    }
                }
            }

        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

无法言说的痛 2024-11-03 21:51:59

您是否尝试过中断()工作? deleteJob() 仅从作业存储中删除作业。

Have you tried interrupt() the job? deleteJob() only removes the job from the job store.

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