Advertisement
aironman

SpringQrtzScheduler

Jul 23rd, 2019
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. package com.aironman.demoquartz.scheduler;
  2.  
  3. import com.aironman.demoquartz.config.AutoWiringSpringBeanJobFactory;
  4. import org.quartz.JobDetail;
  5. import org.quartz.SimpleTrigger;
  6. import org.quartz.Trigger;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
  11. import org.springframework.context.ApplicationContext;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.core.io.ClassPathResource;
  15. import org.springframework.scheduling.quartz.JobDetailFactoryBean;
  16. import org.springframework.scheduling.quartz.SchedulerFactoryBean;
  17. import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
  18. import org.springframework.scheduling.quartz.SpringBeanJobFactory;
  19.  
  20. import javax.annotation.PostConstruct;
  21.  
  22. @Configuration
  23. @ConditionalOnExpression("'${using.spring.schedulerFactory}'=='true'")
  24. public class SpringQrtzScheduler {
  25.  
  26. Logger logger = LoggerFactory.getLogger(getClass());
  27.  
  28. @Autowired
  29. private ApplicationContext applicationContext;
  30.  
  31. @PostConstruct
  32. public void init() {
  33.  
  34. logger.info("SpringQrtzScheduler POSTCONSTRUCT...");
  35. }
  36.  
  37. @Bean
  38. public SpringBeanJobFactory springBeanJobFactory() {
  39. AutoWiringSpringBeanJobFactory jobFactory = new AutoWiringSpringBeanJobFactory();
  40. logger.debug("Configuring Job factory");
  41.  
  42. jobFactory.setApplicationContext(applicationContext);
  43. return jobFactory;
  44. }
  45.  
  46. @Bean
  47. public SchedulerFactoryBean scheduler(Trigger trigger, JobDetail job) {
  48.  
  49. SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
  50. schedulerFactory.setConfigLocation(new ClassPathResource("quartz.properties"));
  51.  
  52. logger.info("Setting the SpringQrtzScheduler BTC up");
  53. schedulerFactory.setJobFactory(springBeanJobFactory());
  54. schedulerFactory.setJobDetails(job);
  55. schedulerFactory.setTriggers(trigger);
  56.  
  57. return schedulerFactory;
  58. }
  59.  
  60. @Bean
  61. public JobDetailFactoryBean jobDetail() {
  62.  
  63. JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
  64. jobDetailFactory.setJobClass(SampleJob.class);
  65. jobDetailFactory.setName("BTC-Qrtz_Job_Detail");
  66. jobDetailFactory.setDescription("Invoke BTC Job service...");
  67. jobDetailFactory.setDurability(true);
  68. logger.info("BTC Quartz scheduler set up!");
  69. return jobDetailFactory;
  70. }
  71.  
  72. @Bean
  73. public SimpleTriggerFactoryBean trigger(JobDetail job) {
  74.  
  75. SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
  76. trigger.setJobDetail(job);
  77.  
  78. int frequencyInSec = 1;
  79. logger.info("Configuring trigger to fire BTC-scheduler every {} seconds", frequencyInSec);
  80.  
  81. trigger.setRepeatInterval(frequencyInSec * 1000);
  82. trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
  83. trigger.setName("BTC-Qrtz_Trigger");
  84. logger.info("BTC-Qrtz_Trigger TRIGGERED!");
  85. return trigger;
  86. }
  87.  
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement