# quartz-web **Repository Path**: quartz-admin/quartz-web ## Basic Information - **Project Name**: quartz-web - **Description**: Quartz任务管理系统,基于Spring、Quartz,Vue的任务调度、监控管理平台。 可以通过REST API, UI界面创建、查询和监控Java调度任务。 Job类型包括MQ,REST,可自定义和注册Job。 支持集群模式执行Quartz任务。 默认支持MQ和REST Job, 支持上传和注册自定义Job。 任务量最好小于10000次每小时,在中小项目中应用。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 1 - **Created**: 2022-06-24 - **Last Updated**: 2022-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # quartz-web #### 介绍 Quartz任务管理系统,基于Spring、Quartz,Vue的任务调度、监控管理平台。 可以通过REST API, UI界面创建、查询和监控Java调度任务。 Job类型包括MQ,REST,可自定义和注册Job。 支持集群模式执行Quartz任务。 默认支持MQ和REST Job, 支持上传和注册自定义Job。 任务量最好小于10000次每小时,在中小项目中应用。 #### 已实现功能 - 任务列表 - 任务新增和修改 - 任务执行 - 表达式生成器 - 任务移除 - 任务监控 #### 软件架构 - 根据cron表达定时运行某个任务(发送消息到MQ, 发送REST请求等) - 一次执行某个任务 - 在某个时刻执行某一次任务 - 任务 Job Job接口是真正需要执行的任务, 需要时序 org.quartz.job 接口,然后实现接口中定义的 execute( ) 方法即可 - 触发器 Trigger Trigger 作为执行任务的调度器。我们如果想要凌晨1点执行备份数据的任务,那么 Trigger 就会设置凌晨1点执行该任务。其中 Trigger 又分为 SimpleTrigger 和 CronTrigger 两种 - 调度器 Scheduler Scheduler 为任务的调度器,它会将任务 Job 及触发器 Trigger 整合起来,负责基于 Trigger 设定的时间来执行 Job #### 安装教程 1. 镜像打包 ```shell docker build . -t quartz-admin ``` 2. 启动 ```shell docker run -d quartz-admin -p 8080:8080 ``` #### 使用说明 1. 创建任务 ```text Method : POST: /api/v1/scheduler/job-group/:job-group/jobs Status : 201: Created Body : { "name": "testJ1", "orgCode": "SIN", "uniqueKey": "uniqueKey", "jobType": "MQ", "data":{ "config": "", "exchangeName": "xxx.exchange", //调度器发送消息到此队列 "routeKey": "xxx.routing" //调度器发送消息到此路由 }, "triggers": [ { "name": "testJ1", "group": "group1", "cron": "0 0/5 * * * ?" //每5分钟执行一次 } ] } Content-Type: application/json ``` - jobType: 定时执行的Job的类型, 支持`MQ, REST, LOG`类型 - `MQ` 类型, 定时将消息发送到MQ队列, 需要定义的`data`包括 - `exchangeName` exhange的名称, 必填 - `routeKey` 路由名称, 可选 - `config` MQ定时发送的消息内容 - `REST`类型,定时调用REST API, 需要定义的`data`包括 - `url` - triggers: 定义Job的触发规则, 可cron job定时触发或触发一次 - `name` trigger的名称 - `group` 同job的group - `cron` 定义定时任务的cron表达式,此参数与`fireTime`不能同时用 - `fireTime` 用于定义一次性的任务触发时间, 此参数与`cron`不能同时用 - `priority` 定义任务执行的优先级, 必须是整数(1,2,3 ...), 数值越大优先级越高 2. 查询Group下的Job列表 ```text Method : GET: /api/v1/scheduler/job-group/:job-group/jobs Status : 200: Ok Body : NULL Accept : application/json ``` 返回结果举例 ```json {"result":[{"name":"testJ2","group":"test.group"}],"resultCode":"OK"} ``` 3. 查询单个Job详情 ```text Method : GET: /api/v1/scheduler/job-group/:job-group/jobs/:job-name Status : 200: Ok Body : NULL Accept : application/json ``` 返回结果举例 ```json {"result":{"name":"testJ2","group":"test.group","orgCode":"1","jobType":"MQ","uniqueKey":"uuid112","data":{"exchangeName":"xxx.exchange","queueName":"multiobj.metric.anomaly.infer.queue","config":},"tr iggers":[{"name":"testJ2","group":"test.group","fireTime":null,"cron":"0 * * * * ?"}]},"resultCode":"OK"} ``` 4. 更新任务 ```text Method : PUT: /api/v1/scheduler/job-group/:job-group/jobs/:job-name Status : 200: Ok Body : { "name": "testJ1", "orgCode": "SIN", "uniqueKey": "uniqueKey", "jobType": "MQ", "data":{ "config": "", "exchangeName": "xxx.exchange", //调度器发送消息到此队列 "routeKey": "xxx.routing" //调度器发送消息到此路由 }, "triggers": [ { "name": "testJ1", "group": "group1", "cron": "0/30 0/1 * 1/1 * ? *" } ] } Content-Type: application/json ``` 5. 挂起任务 (Pause) ```text Method : PATCH: /api/v1/scheduler/job-group/:job-group/jobs/:job-name/pause Status : 200: Ok Body : NULL Content-Type: */* ``` 6. 恢复任务 (Resume) ```text Method : PATCH: /api/v1/scheduler/job-group/:job-group/jobs/:job-name/resume Status : 200: Ok Body : NULL Content-Type: */* ``` 7. 立即执行一次任务 (Resume) ```text Method : PATCH: /api/v1/scheduler/job-group/:job-group/jobs/:job-name/runonce Status : 200: Ok Body : NULL Content-Type: */* ``` 8. 删除任务 ```text Method : DELETE: /api/v1/scheduler/job-group/:job-group/jobs/:job-name Status : 200: Ok Body : NULL Content-Type: */* ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request