#spring #quartz-scheduler
Вопрос:
Я пытаюсь запланировать планировщик quartz с spring-4.3.27 и quartz-2.3.2 с конфигурацией на основе xml, задания не увольняются.
Ранее его рабочий кварц-2.1.1 и кварц-все-2.1.1, Теперь я перешел на кварц-2.3.2 (Quratz-все-2.3.2, который недоступен), Но задания не запускаются.
моя конфигурация планировщика Quartz, например,
lt;task:annotation-driven /gt; lt;!-- enable this for websphere --gt; lt;bean name="workManagerTaskExecutor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor"gt; lt;property name="resourceRef" value="true" /gt; lt;property name="workManagerName" value="wm/default" /gt; lt;/beangt; lt;bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"gt; lt;property name="dataSource" ref="dataSource" /gt; lt;property name="taskExecutor" ref="workManagerTaskExecutor" /gt; lt;property name="autoStartup" value="true" /gt; lt;property name="nonTransactionalDataSource" ref="dataSource" /gt; lt;!-- lt;property name="transactionManager" ref="transactionManager" /gt; --gt; lt;property name="quartzProperties"gt; lt;util:properties location="classpath:/quartz.properties" /gt; lt;/propertygt; lt;property name="waitForJobsToCompleteOnShutdown" value="true" /gt; lt;property name="jobDetails"gt; lt;listgt; lt;ref bean="Job1" /gt; lt;/listgt; lt;/propertygt; lt;property name="triggers"gt; lt;listgt; lt;ref bean="jobTrigger" /gt; lt;/listgt; lt;/propertygt; lt;property name="schedulerContextAsMap"gt; lt;mapgt; lt;entry key="messageExchangeLogDAO" value-ref="MessageExchangeLogDAO" /gt; lt;entry key="outboundMessageSender" value-ref="outboundMessageSender" /gt; lt;entry key="marshaller" value-ref="marshaller" /gt; lt;entry key="reportService" value-ref="reportService" /gt; lt;entry key="userDao" value-ref="UserDAO" /gt; lt;entry key="jobService" value-ref="jobService" /gt; lt;entry key="purchaseOrderDAO" value-ref="PurchaseOrderDAO" /gt; lt;entry key="dbConfig" value-ref="databaseConfiguration" /gt; lt;entry key="purchaseOrderService" value-ref="purchaseOrderService" /gt; lt;entry key="userRoleDAO" value-ref="userRoleDAO" /gt; lt;entry key="mailService" value-ref="mailService" /gt; lt;entry key="buyerNotificationService" value-ref="buyerNotificationService" /gt; lt;entry key="supplierNotificationService" value-ref="supplierNotificationService" /gt; lt;entry key="adminNotificationService" value-ref="adminNotificationService" /gt; lt;entry key="messageService" value-ref="messageService" /gt; lt;entry key="messageProcessor" value-ref="messageProcessor" /gt; lt;entry key="em" value-ref="entityManagerFactory"/gt; lt;entry key="invoiceService" value-ref="invoiceService" /gt; lt;entry key="approvedInvoiceDAO" value-ref="ApprovedInvoiceDAO" /gt; lt;/mapgt; lt;/propertygt; lt;/beangt; lt;bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /gt; lt;bean id="jobTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"gt; lt;property name="jobDetail" ref="job1" /gt; lt;property name="startDelay" value="0" /gt; lt;property name="repeatInterval" value="300000" /gt; lt;/beangt; lt;bean name="job1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"gt; lt;property name="jobClass" value="com.jobs.scheduleJob" /gt; lt;/beangt; lt;aop:configgt; lt;aop:pointcut id="quartzSchedulerPointcut" expression="execution(* org.quartz.Scheduler.*(..))" /gt; lt;aop:advisor advice-ref="quartzSchedulerAdvice" pointcut-ref="quartzSchedulerPointcut" /gt; lt;/aop:configgt; lt;tx:advice id="quartzSchedulerAdvice"gt; lt;tx:attributesgt; lt;tx:method name="get*" read-only="true" propagation="SUPPORTS" /gt; lt;tx:method name="set*" read-only="true" propagation="SUPPORTS" /gt; lt;tx:method name="is*" read-only="true" propagation="SUPPORTS" /gt; lt;tx:method name="insert*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="update*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="delete*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="schedule*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="pause*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="resume*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="run*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="update*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="delete*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="toggle*" read-only="false" propagation="REQUIRED" /gt; lt;tx:method name="clone*" read-only="false" propagation="REQUIRED" /gt; lt;/tx:attributesgt; lt;/tx:advicegt;
Кварц.свойства:
org.quartz.scheduler.instanceName = TSPScheduler org.quartz.scheduler.instanceId = AUTO org.quartz.jobStore.tablePrefix = QRTZ_ org.quartz.jobStore.class = org.springframework.scheduling.quartz.LocalDataSourceJobStore org.quartz.jobStore.useProperties=true org.quartz.jobStore.clusterCheckinInterval=1000 org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.misfireThreshold = 10000 org.quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE org.quartz.jobStore.dontSetAutoCommitFalse = false org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 15 org.quartz.threadPool.threadPriority = 15 org.quartz.jobStore.isClustered = true
Бревна:
org.springframework.scheduling.quartz.SchedulerFactoryBean startScheduler Starting Quartz Scheduler now org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor finishRegistration **No TaskScheduler/ScheduledExecutorService bean found for scheduled processing**
После этого никаких ошибок и ничего не печатается в журналах, в то же время задания также не увольняются.
В таблице QUARTZ_TRIGGERS только next_fire_time обновляется на основе интервала срабатывания.
Примечание: Та же конфигурация отлично работает с quartz-2.1.1 и quartz-all-2.1.1, не работает с quartz-2.3.2
кто — нибудь укажет мне, где я допустил ошибку? что мне нужно сделать здесь, чтобы решить эту проблему с расписанием?
Ответ №1:
столбец sched_time отсутствует в таблице qrtz_fired_triggers. После добавления этой колонки он начал стрелять.