我目前正在 Spring Boot 中使用 Quartz 进行测试,并尝试做一些概念验证。 我已经有一项工作正在运行,但现在我正在尝试为一项工作对多个 JobDetails 进行排队。这应该是灵活的,因为它将用于我们的项目,将数据传递到将进行 api 调用的作业。
所以这是我的以下看法:
public class SampleJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
int num1 = dataMap.getInt("num1");
int num2 = dataMap.getInt("num2");
int sum = num1 + num2;
System.out.println(sum);
}
}
这就是工作,我没有什么可抱怨的。 这是我的配置类:
@Configuration
public class QuartzConfiguration {
@Bean
public JobDetail createJobDetail(Class<? extends Job> jobClass, int num1, int num2) {
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("num1", num1);
jobDataMap.put("num2", num2);
return JobBuilder.newJob(jobClass)
.withIdentity("sampleJob-" + num1 + "-" + num2)
.setJobData(jobDataMap)
.storeDurably()
.build();
}
@Bean
public Trigger sampleJobTrigger(JobDetail sampleJobDetail) {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule();
return TriggerBuilder.newTrigger()
.forJob(sampleJobDetail)
.withIdentity(sampleJobDetail.getKey() + "-trigger")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public Scheduler scheduler(SchedulerFactoryBean factory, Trigger sampleJobTrigger, JobDetail sampleJobDetail) throws SchedulerException {
Scheduler scheduler = factory.getScheduler();
scheduler.scheduleJob(sampleJobDetail,sampleJobTrigger);
scheduler.start();
return scheduler;
}
}
那么我现在如何使用 3 个不同的数字对对三个作业进行排队呢? 老实说,我对 Spring Boot 也很陌生,所以我不能 100% 确定 Bean 是什么
谢谢!
那是行不通的,你是否尝试过