springboot quartz 多任务整合

来源:互联网 发布:淘宝刷単软件 编辑:程序博客网 时间:2024/06/06 01:48

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

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

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

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


@Configurationpublic 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 0
原创粉丝点击