StdScheduler не выполняет работу в соответствии с заданием кукурузы - PullRequest
0 голосов
/ 02 апреля 2019

Я новичок в планировании работы.Я пытаюсь выполнить определенную задачу рекурсивным способом с помощью кварца и org.quartz.impl.StdScheduler.

У меня ниже настройки кварца и впрыска зависимости от пружины - определить серверный компонент планировщика.

Corn exp - 0 * / 5 *?* * - каждые 5 минут

Properties quartzProperties = new Properties();

        quartzProperties.put("rg.quartz.scheduler.instanceName","UnicaScheduler");
        quartzProperties.put("org.quartz.scheduler.skipUpdateCheck","true");
        quartzProperties.put("org.quartz.threadPool.class","org.quartz.simpl.SimpleThreadPool");
        quartzProperties.put("org.quartz.threadPool.threadCount","10");
        quartzProperties.put("org.quartz.threadPool.threadPriority","5");
        quartzProperties.put("org.quartz.scheduler.instanceId","AUTO");
        quartzProperties.put("org.quartz.jobStore.misfireThreshold","60000");
        quartzProperties.put("org.quartz.jobStore.class","org.quartz.impl.jdbcjobstore.JobStoreTX");
        quartzProperties.put("org.quartz.jobStore.lockHandler.class","org.quartz.impl.jdbcjobstore.UpdateLockRowSemaphore");
        quartzProperties.put("org.quartz.jobStore.driverDelegateClass",getDBProductName().getDriverDelegateName());
        quartzProperties.put("org.quartz.jobStore.useProperties","false");
        quartzProperties.put("org.quartz.jobStore.tablePrefix","QRTZ_");
        quartzProperties.put("org.quartz.jobStore.selectWithLockSQL","SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
        quartzProperties.put("org.quartz.jobStore.isClustered",Boolean.toString(AMConfigDB.getInstance().isClustered()));
        quartzProperties.put("org.quartz.plugin.shutdownhook.class","org.quartz.plugins.management.ShutdownHookPlugin");
        quartzProperties.put("org.quartz.plugin.shutdownhook.cleanShutdown","true");

        DataSource dataSource = (DataSource)applicationContext.getBean(DATASHOURCE_BEAN_NAME);
        MutablePropertyValues schedulerFactoryProperties = new MutablePropertyValues();
        schedulerFactoryProperties.addPropertyValue("dataSource", dataSource);
        schedulerFactoryProperties.addPropertyValue("startupDelay", "10");
        schedulerFactoryProperties.addPropertyValue("quartzProperties", quartzProperties);
        schedulerFactoryProperties.addPropertyValue("autoStartup", "true");

        LOG.debug("Starting the Scheduler factory bean with properties as " +quartzProperties);
        RootBeanDefinition beanDefinition = new RootBeanDefinition(SchedulerFactoryBean.class);
        beanDefinition.setPropertyValues(schedulerFactoryProperties);

        DefaultListableBeanFactory beanFactory=(DefaultListableBeanFactory)applicationContext.getBeanFactory();
        beanFactory.registerBeanDefinition(SCHEDULER_BEAN_NAME, beanDefinition);
        beanFactory.initializeBean(beanDefinition, SCHEDULER_BEAN_NAME);
        defineSchedulerServerDependencies();

        // starting the scheduler..
        LOG.debug("Starting the scheduler server.");
        StdScheduler  schedulerFactoryBean = (StdScheduler)applicationContext.getBean(SCHEDULER_BEAN_NAME);
        schedulerFactoryBean.start();   
        LOG.warn("Scheduler metadata : " + ((StdScheduler) applicationContext.getBean(SCHEDULER_BEAN_NAME)).getMetaData().getSummary());

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

Скажите, я начал этов 10.00 утра, и его рекурсивное возникновение - 10.00,10.05,10.10 ... И так далее.

Проблема в том, что, если я остановлю это в промежутке, скажем, 10.16, и перезапущу его 10.21, и вот проблема,в 10.21 (после перезапуска) будет два рабочих задания для 10.21 (неожиданно), а после - 10.25 (ожидается).

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

Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...