• 基于Spring的Quartz任务调度框架扩展


    Quartz是一个开源的分布式任务调度框架,我在工作中也经常会用到quartz。在使用过程中,我遇到了两个痛点:

    1. quartz不支持注解,只能通过硬编码的方式,创建job和trigger,手动添加到quartz scheduler中
    2. quartz没有对应的任务调度管理界面,不能方便的管理job,比如我需要手动触发某个job的执行,因为缺少管理页面,只能通过修改数据库的trigger执行时间,来触发job的执行

    为了解决这两个问题,提高开发效率,我基于spring对quartz进行了扩展,实现了一个叫 spring-quartz-extend 的工具库:

    • 支持注解的方式快速定义Job、Trigger,并自动注册到Quartz Scheduler中

    • 实现了一个简单quartz任务调度管理平台,支持Job的删除和手动触发、Quartz实例的管理等

    源码地址:

    一、用法指南

    1. 在spring boot的启动类或自定义配置类上,添加注解QuartzJobScan,指定你的job所在包,比如`@QuartzJobScan("org.leekeggs.quartzextenddemo.job")
    2. 在你的Job类上添加QuartzJob注解,配置job相关属性,目前支持配置 jobKeyName(默认值:类名) 、 jobKeyGroup(默认值:DEFAULT) 、 jobDescription(默认值:空字符串) 、 storeDurably (默认值:true)
    3. 在你的Job类上添加QuartzTrigger注解,配置trigger相关属性,目前支持配置 triggerKeyName(默认值:类名+"Trigger"") 、 triggerKeyGroup(默认值:DEFAULT) 、 triggerDescription(默认值:空字符串) 、 cronExpress (必选属性);注意:目前仅支持cron类型的trigger

    二、Quartz调度平台使用指南

    1. 启动 quartz-extend-scheduler-center 应用
    2. 打开quartz调度中心web页面 job.html (位于quartz-extend-scheduler-center-web模块目录下)

    三、我的应用如何接入Quartz调度平台

    1. 在spring boot的启动类或自定义配置类上,添加注解QuartzJobScan,指定你的job所在包,比如`@QuartzJobScan("org.leekeggs.quartzextenddemo.job")
    2. 在spring boot的项目配置文件中添加配置:quartz-job-scheduler.registry.url: your scheduler center url (即指定你的quartz调度中心应用地址)

    完成上述配置后,启动你的应用,应用中的job会自动注册到quartz调度中心,重新打开quartz调度中心web页面,即可看到你的应用job.

  • 相关阅读:
    WebDriverAgent入门篇-安装和使用
    5分钟了解TypeScript
    “软到不行”的WWDC2018
    IntelliJ idea 撤回(已经commit未push的)操作
    【java并发核心一】Semaphore 的使用思路
    Spring Boot 如何干掉 if else?
    到底什么是重入锁,拜托,一次搞清楚!
    mysql 递归查找菜单节点的所有子节点
    sql语句递归查询(start with)
    js实现对上传图片的路径转成base64编码,并且对图片进行压缩,实现预览功能1
  • 原文地址:https://www.cnblogs.com/leekeggs/p/14814283.html
Copyright © 2020-2023  润新知