动态配置定时任务

在我们开发中 我们常用定时任务   每次对任务的 修改 或者启停  在传统的方式里 我们需要修改他和spring的 集成后的 xml  这样 导致很麻烦 或者 我们在动态的 添加一个定时任务 每次也是比较麻烦   更具项目的需要 我们最后把 配置的事情 交给数据库来办 从而每次我们只要维护数据库就好  让我们的工程在 初始化的时候 保证我们定时任务 能够加载到spring既可  这是我们初步的 思考  一下使我们的 实现方式  请看代码

  我们把他分为四个步骤:

        1.库表设计

        2.spring的初始化加载

        3.读取数据库的定时配置加载到内存

        

 

 1.库表如下:

 

       2.spring的加载初始化

          实现这个接口    ApplicationListener<ContextRefreshedEvent>  覆写它里面的方法  onApplicationEvent

 

      3.在onApplicationEvent 方法里加载  定时任务那个表到 spring里   这时我们的注意   这几个类 Scheduler   StdSchedulerFactory

        static Scheduler sched = null;
        static SchedulerFactory schedulerFactory = new StdSchedulerFactory();

       循环的从数据库里查出 定时表 进而在循环的 添加并启动

      // 延迟时间
    long delayTime = escm.getEsjcJobDelaytime();
    if (delayTime > 0) {
    starttime = DateUtil.addHour(starttime, Long.valueOf(delayTime).intValue());
    log.debug("DateUtil.addHour(new Date(), Long.signum(delayTime)):"
    + DateUtil.parseDateToString(starttime));
    }
    // Scheduler.DEFAULT_GROUP
    JobDetail jobDetail = null;
    try {
    jobDetail = new JobDetail(strTriggerName, strGroupName,Class.forName(strJobClassName));

    jobDetail.getJobDataMap().put("CronParamName", strParam); // TODO 用来添加参数

    Trigger trigger = new CronTrigger(strTriggerName, strGroupName,strQuartzCron);
    trigger.setStartTime(starttime);

    sched.scheduleJob(jobDetail, trigger);
    log.info("启动JOB:" + strTriggerName + ",轮询周期:" + strQuartzCron);

 

             从而我们简单的 操作 就这样结束了   如有问题 可以沟通 因为时间原因写的可能有点模糊    想集群的下的定时任务  在我们后期的项目也有使用,如果大家 在碰到这方面问题 也可以进行沟通 互相学习

  

转载于:https://www.cnblogs.com/AnKangwenqiang/p/9098796.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值