2017-02-07 5 views
1

Что произойдет, если я не назову метод shutdown() на моем квартете scheduler?Что произойдет, если я не выключу() кварцевый планировщик

У меня есть работа, которая должна выполняться каждый день в разное время дня:

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 является выражение хрон передний пример 0 0 9 ? * 1 перспективе каждое воскресенье в 9 утра.

Теперь проблема в том, что если я закрою планировщик, задание никогда не будет запущено, поэтому я просто запустил его и просто позволю ему запустить. Но я обеспокоен тем, что это приведет к некоторой проблеме утечки памяти в какой-либо проблеме, я не могу понять, достаточно ли это решение. Мои кварцевые являются следующими свойствами:

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_ 

Что мне нужно, чтобы достичь в конце концов, это приложение, которое выполняет работу в определенные моменты времени и планирование должно быть изменяемым без перезапуска приложения.

ответ

2

Quartz scheduler не должен вызывать метод «shutdown» во время работы вашего приложения. Если вы обнаружили какие-либо проблемы, такие как утечка памяти, вы можете решить проблему для сообщества Quartz.

Если вызывается «shutdown», планировщик Quartz никогда не перезапускается, даже если вы снова вызовите метод «start».

Пожалуйста, обратитесь к приведенному ниже URL-адресу, который представляет собой кварцевую документацию. http://www.quartz-scheduler.org/documentation/quartz-2.x/cookbook/ShutdownScheduler.html

+0

Ok Спасибо @hiroyukik Я попытаюсь выполнить реализацию, где я только начинаю планировщик и вижу, что происходит. – TheLearner

Смежные вопросы