如何使用 Quartz 对多个作业进行排队

问题描述 投票:0回答:1

我目前正在 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 是什么

谢谢!

java spring spring-boot quartz-scheduler
1个回答
0
投票

那是行不通的,你是否尝试过

© www.soinside.com 2019 - 2024. All rights reserved.