Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.aironman.demoquartz.scheduler;
- import com.aironman.demoquartz.config.AutoWiringSpringBeanJobFactory;
- import org.quartz.JobDetail;
- import org.quartz.SimpleTrigger;
- import org.quartz.Trigger;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.ClassPathResource;
- import org.springframework.scheduling.quartz.JobDetailFactoryBean;
- import org.springframework.scheduling.quartz.SchedulerFactoryBean;
- import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
- import org.springframework.scheduling.quartz.SpringBeanJobFactory;
- import javax.annotation.PostConstruct;
- @Configuration
- @ConditionalOnExpression("'${using.spring.schedulerFactory}'=='true'")
- public class SpringQrtzScheduler {
- Logger logger = LoggerFactory.getLogger(getClass());
- @Autowired
- private ApplicationContext applicationContext;
- @PostConstruct
- public void init() {
- logger.info("SpringQrtzScheduler POSTCONSTRUCT...");
- }
- @Bean
- public SpringBeanJobFactory springBeanJobFactory() {
- AutoWiringSpringBeanJobFactory jobFactory = new AutoWiringSpringBeanJobFactory();
- logger.debug("Configuring Job factory");
- jobFactory.setApplicationContext(applicationContext);
- return jobFactory;
- }
- @Bean
- public SchedulerFactoryBean scheduler(Trigger trigger, JobDetail job) {
- SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
- schedulerFactory.setConfigLocation(new ClassPathResource("quartz.properties"));
- logger.info("Setting the SpringQrtzScheduler BTC up");
- schedulerFactory.setJobFactory(springBeanJobFactory());
- schedulerFactory.setJobDetails(job);
- schedulerFactory.setTriggers(trigger);
- return schedulerFactory;
- }
- @Bean
- public JobDetailFactoryBean jobDetail() {
- JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
- jobDetailFactory.setJobClass(SampleJob.class);
- jobDetailFactory.setName("BTC-Qrtz_Job_Detail");
- jobDetailFactory.setDescription("Invoke BTC Job service...");
- jobDetailFactory.setDurability(true);
- logger.info("BTC Quartz scheduler set up!");
- return jobDetailFactory;
- }
- @Bean
- public SimpleTriggerFactoryBean trigger(JobDetail job) {
- SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
- trigger.setJobDetail(job);
- int frequencyInSec = 1;
- logger.info("Configuring trigger to fire BTC-scheduler every {} seconds", frequencyInSec);
- trigger.setRepeatInterval(frequencyInSec * 1000);
- trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
- trigger.setName("BTC-Qrtz_Trigger");
- logger.info("BTC-Qrtz_Trigger TRIGGERED!");
- return trigger;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement