【发布时间】:2022-10-25 19:57:31
【问题描述】:
我正在尝试使用 @DisallowConcurrentExecution 运行作业,但它似乎不起作用。 有谁能够帮我 ? 这是我的代码。
----------> QuartzConfig.java
@Bean
public JobDetail processJobDetail() {
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("jobName", "processJob");
jobDataMap.put("jobLauncher", jobLauncher);
jobDataMap.put("jobLocator", jobLocator);
return JobBuilder.newJob(CustomQuartzJob.class)
.withIdentity("processJob")
.setJobData(jobDataMap)
.storeDurably()
.build();
}
@Bean
public Trigger processTrigger() {
return TriggerBuilder.newTrigger()
.forJob(processJobDetail())
.withIdentity("processJobTrigger")
.withSchedule(SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(30)
.repeatForever())
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
SchedulerFactoryBean scheduler = new SchedulerFactoryBean();
scheduler.setTriggers(processTrigger());
scheduler.setQuartzProperties(quartzProperties());
scheduler.setJobDetails(processJobDetail());
return scheduler;
}
-----> ProcessJobConfig.java
@DisallowConcurrentExecution
public class ProcessJobConfig {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job processJob() throws Exception {
return jobBuilderFactory
.get("processJob")
.start(updateJobPartitionerStep())
.build();
}
执行时仍在同时启动作业 有人可以告诉我我做错了什么吗?请
【问题讨论】:
-
我刚刚发现我们正在使用多线程运行:org.quartz.threadPool.threadCount = 10
标签: spring-batch quartz-scheduler