springboot整合querz定时调度

springboot整合querz定时调度

一:配置定时任务配置类:

@Configuration
public class QuartzConfig {
	//从yml中拿出的定时任务时间戳(0 0 0 1/1 * ? * )在线的cron表达式会贴在后面
    @Value("${active-schedule-express}")
    private String activityScheduleExpress;


   @Bean(name = "queryChargeDataJob")
    public JobDetail queryActivityDataJob() {
        return JobBuilder.newJob(ChargeManager.class).withIdentity("queryActivityData").storeDurably().build();
    }

    @Bean(name = "queryActivityDataTrigger")
    public Trigger queryActivityDataTrigger() {  // 0/5 * * * * ? *
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(activityScheduleExpress);
        return TriggerBuilder.newTrigger().forJob(queryActivityDataJob())
                .withIdentity("queryActivityData")
                .withSchedule(scheduleBuilder)
                .build();
    }

}

二:使用quartz

1.拿出要跑的类继承QuartzJobBean,把executeInternal重写,我这里是配合ExecutorService这个线程池去跑
  	@Autowired
    private ExecutorService executorService;
    
    @Resource(name = "activityInfoBlockingQueue")
	private BlockingQueue<ActivityInfo> activityInfoBlockingQueue;
    
    Map<Long, Activity> rules = activityService.realRules();
    for (Map.Entry<Long, ActivityRule> entry : rules.entrySet()) {
                executorService.submit(new QueryInvitationRunner(entry.getValue().Id(), entry.getValue().getStartDate(),
                        entry.getValue().getEndDate(),
                        chargeService, activityInfoBlockingQueue));
            }
         
    QueryInvitationRunner这个类实现Runnable,重写run方法,至于跑什么看业务需求

定时任务会根据你的设置的定时间去跑,在这附上在线Cron表达式生成器http://cron.qqe2.com/

三:一些注解的解释

1.@DisallowConcurrentExecution :Quartz的定时任务都是默认并发执行的,不会等待上一次任务执行完毕后才去执行,定时任务太长的话,长时间的占用资源会导致其他任务阻塞
@DisallowConcurrentExecution 不会并发执行,会等待上一个线程执行完才去执行下一个任务
2.@Cacheable :标记在一个方法上表明该方法支持缓存,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值