作业执行前的控制

时间:2019-01-09 10:47:20

标签: java spring quartz-scheduler quartz crontrigger

我对每个人来说,我正在从事一个有n个工作的项目。我举一个例子: 我有一个带有以下属性的quartz-context.xml文件:

<bean id="jobImportFi01QuartzTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <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.JobDetailBean">
        <property name="group" value="XXX" />
        <property name="jobClass"
            value="com.batch.job.import.quartz.ImportJobDetail" />
        <property name="description" value="Fi01Import" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="jobImportFi01" />
            </map>
        </property>
    </bean>

和ImportJobDetail类是:

public class ImportJobDetail extends AbstractJobDetail {

    @Override
    protected JobParameters setupJobParameters(JobParameters jobParameters, JobExecutionContext context,
            String jobName) {
        JobParametersBuilder builder = new JobParametersBuilder(jobParameters);

        builder.addString(ConfigManager.PARAM_MODE, ConfigManager.MODE_PERSIST);
        return builder.toJobParameters();
    }

}

我是春季和夸脱新手,我想在将作业详细记录保存到db之前检查作业是否已在运行。 问题在于,首先在db中保存一个包含作业执行详细信息的记录(开始时间-结束时间ecc),然后存在一个controll,如果该作业已经在运行,则将记录中的状态值设置为'FAILED'并停止执行。但是我想在将记录存储在db中之前进行控制,因为如果我有每5秒运行一次的工作,例如一次需要1个小时,那么我在db中会发现很多记录设置为FAILED且一个记录设置为COMPLETED(该工作首先运行)。我必须使用SchedulerFactoryBean并动态管理作业? 谢谢

0 个答案:

没有答案