Spring任务调度 Quartz

Spring任务调度 Quartz

  1.  

任务基类

  • 1 定义getCron(),方便获取每个任务的定时调度参数

   public abstract class AbstractExchanger implements Job {
   
      public abstract String getCron();
   
   }

 

任务触发器

关键点:

  • 1 加注解 @Component,使这个bean被Sping管理

  • 2 实现ApplicationContextAware,确保可以在项目启动的时候任务执行

  • 3 获取scheduler

  • 4 获取所有实现任务基类的bean: ctx.getBeansOfType(AbstractExchanger.class).values(),

    并将它们添加到scheduler:

    scheduler.scheduleJob(jobDetail, trigger);

@Component
public class ExchangerTrigger implements ApplicationContextAware {
   private Logger logger = LoggerFactory.getLogger(this.getClass());
   
   private ApplicationContext ctx = null;
   
   public void trigger() {
      Scheduler scheduler = null;
      try {
         scheduler = StdSchedulerFactory.getDefaultScheduler();
         for(AbstractExchanger exchanger : ctx.getBeansOfType(AbstractExchanger.class).values()) {
            logger.info("建立同步定时任务:{}", JSON.toJSONString(exchanger));
            JobDetail jobDetail = JobBuilder.newJob(exchanger.getClass()).withIdentity(exchanger.toString() + "Job").build();
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity(TriggerKey.triggerKey(exchanger.toString() + "Trigger", "myTriggerGroup"))
                  .withSchedule(CronScheduleBuilder.cronSchedule(exchanger.getCron()))
                  .build();

            scheduler.scheduleJob(jobDetail, trigger);

         }
         scheduler.start();
      } catch (Exception e) {
         logger.error("数据交换任务定时器启动失败。", e);
         return;
      }

   }

   @Override
   public void setApplicationContext(ApplicationContext applicationContext)
         throws BeansException {
      ctx = applicationContext;
      this.trigger();
   }
}

任务实现类

@Component
public class AlarmInfoHandler extends AbstractExchanger {
   public void send (){
   }  
   @Override
   public String getCron() {
      //获取定时任务执行参数
   }
	
   //具体业务执行
   @Override
   public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
      send();
   }
}

2.

maven依赖

<dependency>
 <groupId>org.quartz-scheduler</groupId>
 <artifactId>quartz</artifactId>
 <version>2.2.3</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context-support</artifactId>
 <version>4.2.4.RELEASE</version>
</dependency>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值