Quartz作业有时会跳过执行而没有任何错误

时间:2019-03-04 06:39:43

标签: weblogic quartz-scheduler quartz

我有一个使用Quartz 2.2.2库的Java应用程序,并且该应用程序已部署在Weblogic服务器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表中的所有条目均正确发生,但有时石英作业无法执行。即作业开始执行两次,然后跳过执行两次。

以下是使用的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

需要帮助解决此问题。

非常感谢, Jyoti Ranjan

0 个答案:

没有答案