Quantcast
Channel: How can I dynamically create Triggers in Spring Boot using Quartz? - Stack Overflow
Viewing all articles
Browse latest Browse all 2

Answer by Rodrigo Villalba Zayas for How can I dynamically create Triggers in Spring Boot using Quartz?

$
0
0

You just need to create a durable job once and then create all triggers for that job.

@Service
class QuartzService {

   @Autowired
   private SchedulerFactoryBean schedulerFactoryBean;

   void init(List<MyTrigger> triggers) {
        Scheduler scheduler = schedulerFactoryBean.getScheduler();
        scheduler.addJob(job(), true);

        for (MyTrigger myTrigger: triggers) {
            scheduler.scheduleJob(trigger(myTrigger));
        } 
    }

    private JobDetail job() {
        return JobBuilder.newJob(SampleJob.class)
            .withIdentity("QuartzJob", "QuartzJob")
            .storeDurably()
            .build();
    }

    private Trigger trigger(MyTrigger trigger) {
        return TriggerBuilder.newTrigger()
            .withIdentity(trigger.name)
            .withSchedule( 
                CronScheduleBuilder.cronSchedule(trigger.schedule))
            .forJob("QuartzJob", "QuartzJob")
            .build();
    }
}

class MyTrigger {
    String name;
    String schedule;
}

So, here you only need to pass a List of MyTrigger to QuartsService.init() method and it will create dynamically the triggers with its own schedule.


Viewing all articles
Browse latest Browse all 2

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>