springboot quartz 多任务整合

最近在做定时任务, 参考了一下这位老兄的文章

http://blog.csdn.net/liuchuanhong1/article/details/60873295

接下来遇到一个问题, 就是多任务, 上面文章中主要讲的是单任务的. 也在网上找了下, 发现都有些复杂.

我觉得springboot 不应该这么笨, 肯定有简单的办法. 所以研究了一下. 下面贴出我的代码


@Configuration
public class QuartzConfigration
{
    /**
     * attention: 名字必须是 jobDetail
     * Details:配置定时任务
     */
    @Bean(name = "jobCommissionDetail")
    public MethodInvokingJobDetailFactoryBean balanceCommissionDetail(BalanceCommission task)
    {
        // ScheduleTask为需要执行的任务
        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
        jobDetail.setConcurrent(false);//是否并发执行
        jobDetail.setName("balanceCommission");// 设置任务的名字
        jobDetail.setGroup("balance");// 设置任务的分组,这些属性都可以存储在数据库中,在多任务的时候使用
        jobDetail.setTargetObject(task);//为需要执行的实体类对应的对象

        //通过这几个配置,告诉JobDetailFactoryBean我们需要执行定时执行ScheduleTask类中的balanceProfit方法
        jobDetail.setTargetMethod("execute");
        return jobDetail;
    }

    @Bean(name = "jobProfitDetail")
    public MethodInvokingJobDetailFactoryBean balanceProfitDetail(BalanceProfit task)
    {
        // ScheduleTask为需要执行的任务
        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
        jobDetail.setConcurrent(false);//是否并发执行
        jobDetail.setName("balanceProfit");// 设置任务的名字
        jobDetail.setGroup("balance");// 设置任务的分组,这些属性都可以存储在数据库中,在多任务的时候使用
        jobDetail.setTargetObject(task);//为需要执行的实体类对应的对象
        jobDetail.setTargetMethod("execute");
        return jobDetail;
    }

    @Bean
    public JobDetailDO getJobDetails(List<MethodInvokingJobDetailFactoryBean> list)
    {
        JobDetailDO detailDO = new JobDetailDO();
        for (MethodInvokingJobDetailFactoryBean jobDetail : list)
        {
            detailDO.addJobDetail(jobDetail);
        }
        return detailDO;
    }

//    @Bean
//    public CronTriggerFactoryBean commissionTrigger(JobDetailDO jobDetails)
//    {
//        CronTriggerFactoryBean cronTrigger = new CronTriggerFactoryBean();
//        cronTrigger.setJobDetail(jobDetails.getJobDetail("balanceCommission").getObject());
//        cronTrigger.setCronExpression("*/1 * * * * ?");// 初始时的cron表达式
//        cronTrigger.setName("trigger-balanceCommission");// trigger的name
//        return cronTrigger;
//    }

    @Bean
    public CronTriggerFactoryBean commissionTrigger2(JobDetailDO jobDetails)
    {
        CronTriggerFactoryBean cronTrigger = new CronTriggerFactoryBean();
        cronTrigger.setJobDetail(jobDetails.getJobDetail("balanceProfit").getObject());
        cronTrigger.setCronExpression("*/5 * * * * ?");// 初始时的cron表达式
        cronTrigger.setName("trigger-balanceProfit");// trigger的name
        return cronTrigger;
    }

    /**
     * attention:
     * Details:定义quartz调度工厂
     */
    @Bean(name = "scheduler")
    public SchedulerFactoryBean schedulerFactory(Trigger... triggers)
    {
        SchedulerFactoryBean bean = new SchedulerFactoryBean();

        // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job
        bean.setOverwriteExistingJobs(true); // TODO 这句还没理解

        // 延时启动,应用启动1秒后
        bean.setStartupDelay(1);

        // 注册触发器
        bean.setTriggers(triggers);
        return bean;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值