Кварцевое задание иногда пропускает без ошибок - PullRequest
0 голосов
/ 04 марта 2019

У меня есть приложение Java, которое использует библиотеку Quartz 2.2.2, и приложение развернуто на кластере Weblogic server 12.2.1.2.0.

Я хочу планировать работу каждые 5 минут и использовать 0 0 /5 * 1/1 *?* Выражение cron и код ниже.

     String strDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(startAt.dateValue());  //new Date()
                Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(strDate);

    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
                JobKey jobKey = new JobKey(jobName);
                job = JobBuilder.newJob(jobClass)
                                .withIdentity(jobKey.getName(), null)
                                .build();
    String endDateVal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(endAt.dateValue());
                        Date endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(endDateVal);
                        System.out.println("QuartzSchedulerSingleton : endDate " + endDate);
                        trigger = TriggerBuilder.newTrigger()
                                                .withIdentity(jobKey.getName())
                                                .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionFireAndProceed())
                                                .startAt(startDate)
                                                .endAt(endDate)
                                                .build();
     trigger.getJobDataMap().putAsString("RequestId", new Long(requestId));
                scheduler.scheduleJob(job, trigger);

Все записи в кварцевых таблицах происходят правильно, но иногда кварцевое задание не выполняется.то есть задание запускается и выполняется в течение пары раз и пропускает выполнение несколько раз.

Ниже приведено свойство Quartz.Я пытался увеличить количество потоков до 50 (org.quartz.threadPool.threadCount = 50), но это не помогло.

org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.scheduler.skipUpdateCheck=true
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=15
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.dataSource=GenericScheduler
org.quartz.jobStore.tablePrefix=QUARTZ_
org.quartz.jobStore.isClustered=true
org.quartz.dataSource.GenericScheduler.jndiURL=jdbc/ocx_hcm
org.quartz.dataSource.GenericScheduler.java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Нужна помощь в решении этой проблемы.

МногиеСпасибо, Джоти Ранджан

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