写点什么

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

作者:redcoder54
  • 2024-08-30
    上海
  • 本文字数:1381 字

    阅读完需:约 5 分钟

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

在工作中,我经常会使用到 Quartz,一个开源的分布式任务调度框架。然而,尽管 Quartz 提供了强大的功能,我在使用过程中却遇到了一些痛点:


首先,Quartz 不支持注解,这导致我们只能通过硬编码的方式创建 job 和 trigger,并手动注册到 Quartz scheduler 中。


其次,Quartz 缺乏一个方便的任务调度管理界面。在实际工作中,我常常需要手动触发某个 job 的执行,然而由于缺少管理页面,我们只能通过修改数据库中 trigger 的执行时间来间接触发 job 的执行,这显然不是一个高效的方式。


为了解决这些问题,提高开发效率,我基于 Spring 对 Quartz 进行了扩展,开发了一个名为 Quartz Plus 的工具库:

  1. 支持注解的方式快速定义 Job 和 Trigger:使用 @QuartzJob@QuartzTrigger 注解,我们可以快速地定义 job 和 trigger,并且它们会自动注册到 Quartz Scheduler 中。

  2. 实现了一个带有管理界面的 Quartz 任务调度中心:该任务调度中心提供了完整的管理界面,包括 job 管理、Quartz 实例管理、用户管理等功能,使我们能够更方便地管理和监控任务调度。


项目源码地址:https://github.com/YuanInCode/quartz-plus.git

快速上手

快速创建 Job 和 Trigger

使用 @QuartzJob@QuartzTrigger 注解快速创建 job 和 trigger,如下所示:

@QuartzJob(description = "打印 hello world")@QuartzTrigger(cron = "0/10 * * * * ?")public class HelloWorldJob implements Job {
@Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("hello world, current time: " + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); }}
复制代码

配置 Spring Boot

在 Spring Boot 项目的配置文件中引入依赖,并启用 Quartz Plus 并指定 job 包路径,示例如下:

<dependency>    <groupId>redcoder</groupId>    <artifactId>quartz-plus-core</artifactId>    <version>${quartzplus.latest.version}</version></dependency>
复制代码


@SpringBootApplication@QuartzJobScan("redcoder.quartzplus.demo.job")public class QuartzPlusDemoApplication {
public static void main(String[] args) { SpringApplication.run(QuartzPlusDemoApplication.class, args); }}
复制代码

Quartz 任务调度中心使用指南

要使用 Quartz 任务调度中心,你需要在你的服务器上部署 quartz-plus-scheduler-centerquartz-plus-web-console 这两个服务。

本地启动演示

在 IDE 中启动 quartz-plus-scheduler-center,或者使用 java -jar quartz-plus-scheduler-center-1.1.0.jar 启动。


在 IDE 中启动 quartz-plus-web-console,或者使用 nginx 部署。


在浏览器中打开 http://localhost:8080 即可查看已注册的实例和 Job。


系统内置了两个登录用户:


  • 用户 1:用户名为 admin,密码为 123456,拥有管理员权限。

  • 用户 2:用户名为 quartz,密码为 123456,仅具有普通用户权限。


在 Spring Boot 项目的配置文件中添加以下配置:

quartz-job-scheduler:  registry:    # Quartz任务调度管理系统-注册地址    register-url: http://localhost:32007/api/quartz-job-scheduler/instance/register    # Quartz任务调度管理系统-解除注册地址    unregister-url: http://localhost:32007/api/quartz-job-scheduler/instance/unregister
复制代码


发布于: 刚刚阅读数: 6
用户头像

redcoder54

关注

还未添加个人签名 2018-07-19 加入

还未添加个人简介

评论

发布
暂无评论
Quartz Plus - 基于Spring的Quartz任务调度框架扩展_quartz_redcoder54_InfoQ写作社区