gpt4 book ai didi

java - 如果我不 shutdown() quartz 调度程序会发生什么

转载 作者:行者123 更新时间:2023-11-30 02:39:56 24 4
gpt4 key购买 nike

如果我不在 Quartz scheduler 上调用 shutdown() 方法,会发生什么?

我有一项工作需要每天在不同时间运行:

    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

JobDetail job = newJob(NotificationCronJob.class).withIdentity("notificationJob1", "notificationGroup1").build();

CronTrigger cronTriggerSunday = newTrigger().withIdentity("notificationTrigger1", "notificationGroup1")
.withSchedule(cronSchedule(Config.SUNDAY_NOTIFY))
.forJob(job)
.build();
CronTrigger cronTriggerMonday = newTrigger().withIdentity("notificationTrigger2", "notificationGroup1")
.withSchedule(cronSchedule(Config.MONDAY_NOTIFY))
.forJob(job)
.build();
CronTrigger cronTriggerTuesday = newTrigger().withIdentity("notificationTrigger3", "notificationGroup1")
.withSchedule(cronSchedule(Config.TUESDAY_NOTIFY))
.forJob(job)
.build();
CronTrigger cronTriggerWednesday = newTrigger().withIdentity("notificationTrigger4", "notificationGroup1")
.withSchedule(cronSchedule(Config.WEDENSDAY_NOTIFY))
.forJob(job)
.build();
CronTrigger cronTriggerThursday = newTrigger().withIdentity("notificationTrigger5", "notificationGroup1")
.withSchedule(cronSchedule(Config.THURSDAY_NOTIFY))
.forJob(job)
.build();
CronTrigger cronTriggerFriday = newTrigger().withIdentity("notificationTrigger6", "notificationGroup1")
.withSchedule(cronSchedule(Config.FRIDAY_NOTIFY))
.forJob(job)
.build();
CronTrigger cronTriggerSaturday = newTrigger().withIdentity("notificationTrigger7", "notificationGroup1")
.withSchedule(cronSchedule(Config.SATURDAY_NOTIFY))
.forJob(job)
.build();

scheduler.scheduleJob(job, cronTriggerSunday);
scheduler.scheduleJob(cronTriggerMonday);
scheduler.rescheduleJob(cronTriggerMonday.getKey(), cronTriggerMonday);
scheduler.scheduleJob(cronTriggerTuesday);
scheduler.scheduleJob(cronTriggerWednesday);
scheduler.scheduleJob(cronTriggerThursday);
scheduler.scheduleJob(cronTriggerFriday);
scheduler.scheduleJob(cronTriggerSaturday);

scheduler.start();

每个 Config.DAY 都是一个 cron 表达式,例如 0 0 9 ? * 1每周日上午 9 点运行。

现在的问题是,如果我关闭调度程序,作业将永远不会运行,因此我只需启动它并让它运行。但我担心这是否会导致某种内存泄漏和线程问题,我无法弄清楚这是否是一个足够好的解决方案。我的 quartz 属性如下:

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
org.quartz.dataSource.myDS.URL = jdbc:sqlserver://localhost;databaseName=myDB
org.quartz.dataSource.myDS.user = myUser
org.quartz.dataSource.myDS.password = myPassword
org.quartz.dataSource.myDS.maxConnections = 5
org.quartz.jobStore.tablePrefix = QRTZ_

我最终需要实现的是一个在定义的时间运行作业的应用程序,并且调度应该是可变的,而无需重新启动应用程序。

最佳答案

当您的应用程序运行时,Quartz 调度程序不应调用“关闭”方法。如果您发现内存泄漏等问题,可以将问题发布到Quartz社区。

如果调用“shutdown”,即使您再次调用“start”方法,Quartz 调度程序也不会重新启动。

请引用以下 URL,这是 Quartz 文档。 http://www.quartz-scheduler.org/documentation/quartz-2.x/cookbook/ShutdownScheduler.html

关于java - 如果我不 shutdown() quartz 调度程序会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42086404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com