首页 > 解决方案 > CronTriggerFactoryBean 不适用于新版本

问题描述

我使用石英来安排我的工作(使用 Spring 处理 maven 项目)。

我将quartz更新到2.3.0版本并更改了CronTriggerBeanand JobDetailBeanin CronTriggerFactoryBeanJobDetailFactoryBean但是使用此配置,它不会像(cronexpression)那样在每个请求时间实例化作业,它与第一个配置(CronTriggerBean)一起使用。

我必须做一些实施吗?

石英上下文.xml

<bean id="jobImportFi01QuartzTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="group" value="xxx" />
        <property name="jobDetail" ref="jobImportFi01Quartz" />
        <property name="cronExpression" value="${jobImportFi01.cron.expression}" />
        <property name="misfireInstructionName"
            value="MISFIRE_INSTRUCTION_DO_NOTHING" />
    </bean>

    <bean id="jobImportFi01Quartz"
        class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="group" value="xxx" />
        <property name="jobClass"
            value="com.batch.job.timdataimport.quartz.ImportJobDetail" />
        <property name="description" value="Fi01Import" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="jobImportFi01" />
            </map>
        </property>
    </bean>

标签: springmavenquartzcrontrigger

解决方案


这是我们在 Quartz 2.3.0 中使用的,它工作正常:

<bean id="job1" class="org.quartz.impl.JobDetailImpl">
  <property name="jobClass" value="com.quartzdesk.test.quartz.v2.TestJob"/>
  <property name="group" value="quartzdesk-test"/>
  <property name="name" value="Job1"/>
  <property name="description"
            value="Simple test job."/>

  <property name="durability" value="true"/>

  <property name="jobDataMap">
    <bean class="org.quartz.JobDataMap">
      <constructor-arg>
        <util:map>
          <entry key="jobKey01" value="value01"/>
        </util:map>
      </constructor-arg>
    </bean>
  </property>
</bean>

<bean id="job1Trigger"
      class="org.quartz.impl.triggers.CronTriggerImpl">
  <property name="name" value="Job1Trigger"/>
  <property name="group" value="quartzdesk-test"/>
  <property name="jobName" value="Job1"/>
  <property name="jobGroup" value="quartzdesk-test"/>
  <property name="description" value="Cron trigger that fires every 15 minutes."/>
  <property name="cronExpression" value="0 1/15 * * * ?"/>

  <property name="startTime" value="2016-01-01"/>

  <property name="calendarName" value="annualCalendar"/>

  <property name="jobDataMap">
    <bean class="org.quartz.JobDataMap">
      <constructor-arg>
        <util:map>
          <entry key="jobTriggerKey01" value="value01"/>
        </util:map>
      </constructor-arg>
    </bean>
  </property>
</bean>

推荐阅读