zoukankan      html  css  js  c++  java
  • 基于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.

  • 相关阅读:
    WSGI 简介
    past.deploy
    python中self和cls
    heat template例子
    cinder-api 启动过程学习
    ubuntu安装cloud-init制作成openstack镜像---cloud-init篇
    sus 11.3如何安装与配置cloud-init
    DHCP工作原理
    交换
    路由器
  • 原文地址:https://www.cnblogs.com/leekeggs/p/14814283.html
Copyright © 2011-2022 走看看