zoukankan      html  css  js  c++  java
  • 动态配置定时任务

    在我们开发中 我们常用定时任务   每次对任务的 修改 或者启停  在传统的方式里 我们需要修改他和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);

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

      

  • 相关阅读:
    Elasticsearch常用命令
    Linux中使用systemctl操作服务、新建自定义服务
    Windows下安装MongoDB解压版
    Java执行cmd命令、bat脚本、linux命令,shell脚本等
    Ubuntu
    PostgreSQL删除数据库失败处理
    Ubuntu service 命令
    Ubuntu18修改/迁移mysql5.7数据存放路径
    攻防世界-web-ics-02(sql注入、ssrf、目录扫描)
    攻防世界-web-filemanager(源码泄漏、二次注入)
  • 原文地址:https://www.cnblogs.com/AnKangwenqiang/p/9098796.html
Copyright © 2011-2022 走看看