调度中心提供API服务,支持通过API服务对任务进行查询、新增、更新、启停等操作;

This commit is contained in:
xuxueli 2018-09-22 22:45:23 +08:00
parent 7f50ed991a
commit 88b0812b61
5 changed files with 32 additions and 54 deletions

View File

@ -920,16 +920,28 @@ echo "分片总数 total = $3"
- 设置二调度中心和执行器设置了相同的AccessToken - 设置二调度中心和执行器设置了相同的AccessToken
### 5.11 调度中心API服务 ### 5.11 调度中心API服务
调度中心提供了API服务供执行器和业务方选择使用目前提供的API服务有
调度中心提供了API服务主要分为两种类型
#### 5.11.1 提供给执行器的API服务
1、任务结果回调服务 1、任务结果回调服务
2、执行器注册服务 2、执行器注册服务
3、执行器注册摘除服务 3、执行器注册摘除服务
4、触发任务单次执行服务支持任务根据业务事件触发 4、触发任务单次执行服务支持任务根据业务事件触发
调度中心API服务位置com.xxl.job.core.biz.AdminBiz.java API服务位置com.xxl.job.core.biz.AdminBiz.java
API服务请求参考代码com.xxl.job.adminbiz.AdminBizTest.java
调度中心API服务请求参考代码com.xxl.job.adminbiz.AdminBizTest.java #### 5.11.2 提供给业务的API服务
1、任务列表查询
2、任务新增
3、任务更新
4、任务删除
5、任务暂停
6、任务恢复
7、任务触发
API服务位置com.xxl.job.admin.controller.JobInfoController.java
API服务请求参考代码可参考任务界面操作的ajax请求。任何ajax接口均可配置成为API服务只需在待启用的API服务上添加 “@PermessionLimit(limit = false)” 注解取消登陆态拦截即可;
### 5.12 执行器API服务 ### 5.12 执行器API服务
执行器提供了API服务供调度中心选择使用目前提供的API服务有 执行器提供了API服务供调度中心选择使用目前提供的API服务有
@ -940,9 +952,8 @@ echo "分片总数 total = $3"
4、获取Rolling Log 4、获取Rolling Log
5、终止任务 5、终止任务
执行器API服务位置com.xxl.job.core.biz.ExecutorBiz API服务位置com.xxl.job.core.biz.ExecutorBiz
API服务请求参考代码com.xxl.executor.test.DemoJobHandlerTest
执行器API服务请求参考代码com.xxl.executor.test.DemoJobHandlerTest
### 5.13 故障转移 & 失败重试 ### 5.13 故障转移 & 失败重试
一次完整任务流程包括"调度(调度中心) + 执行(执行器)"两个阶段。 一次完整任务流程包括"调度(调度中心) + 执行(执行器)"两个阶段。
@ -1240,14 +1251,14 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 1、任务超时控制新增任务属性 "任务超时时间",并支持自定义,任务运行超时将会主动中断任务; - 1、任务超时控制新增任务属性 "任务超时时间",并支持自定义,任务运行超时将会主动中断任务;
- 2、任务失败重试次数新增任务属性 "失败重试次数",并支持自定义,当任务失败时将会按照预设的失败重试次数主动进行重试;同时收敛废弃其他失败重试策略,如调度失败、执行失败、状态码失败等; - 2、任务失败重试次数新增任务属性 "失败重试次数",并支持自定义,当任务失败时将会按照预设的失败重试次数主动进行重试;同时收敛废弃其他失败重试策略,如调度失败、执行失败、状态码失败等;
- 3、新增任务运行模式 "GLUE模式(PHP) "支持php脚本任务 - 3、新增任务运行模式 "GLUE模式(PHP) "支持php脚本任务
- 4、调度全异步处理任务触发之后推送到调度队列多线程并发处理调度请求提高任务调度速率的同时避免因网络问题导致quartz调度线程阻塞的问题 - 4、新增任务运行模式 "GLUE模式(PowerShell) "支持PowerShell脚本任务
- 5、执行器任务结果落盘优化:执行器回调失败时将任务结果写磁盘,待重启或网络恢复时重试回调任务结果,防止任务执行结果丢失 - 5、调度全异步处理任务触发之后推送到调度队列多线程并发处理调度请求提高任务调度速率的同时避免因网络问题导致quartz调度线程阻塞的问题
- 6、任务日志查询速度大幅提升百万级别数据量搜索速度提升1000倍 - 6、执行器任务结果落盘优化:执行器回调失败时将任务结果写磁盘,待重启或网络恢复时重试回调任务结果,防止任务执行结果丢失
- 7、底层自研Log组件参数占位符改为"{}",并修复打印有参日志时参数不匹配导致报错的问题 - 7、任务日志查询速度大幅提升百万级别数据量搜索速度提升1000倍
- 8、任务回调结果优化支持展示在Rolling log中方便问题排查 - 8、底层自研Log组件参数占位符改为"{}",并修复打印有参日志时参数不匹配导致报错的问题
- 9、底层LocalCache组件兼容性优化支持jdk9、jdk10及以上版本编译部署 - 9、任务回调结果优化支持展示在Rolling log中方便问题排查
- 10、任务属性枚举 "任务模式、阻塞策略" 国际化优化 - 10、底层LocalCache组件兼容性优化支持jdk9、jdk10及以上版本编译部署
- 11、任务日志表状态字段类型优化; - 11、任务属性枚举 "任务模式、阻塞策略" 国际化优化;
- 12、告警邮件固定使用 UTF-8 编码格式,修复由机器编码导致的邮件乱码问题; - 12、告警邮件固定使用 UTF-8 编码格式,修复由机器编码导致的邮件乱码问题;
- 13、告警邮件中展示失败告警信息 - 13、告警邮件中展示失败告警信息
- 14、告警邮箱支持SSL配置 - 14、告警邮箱支持SSL配置
@ -1264,15 +1275,14 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 25、任务调度备注中标注任务触发类型如Cron触发、父任务触发、API触发等等方便排查调度日志 - 25、任务调度备注中标注任务触发类型如Cron触发、父任务触发、API触发等等方便排查调度日志
- 26、底层日志组件SimpleDateFormat线程安全问题修复 - 26、底层日志组件SimpleDateFormat线程安全问题修复
- 27、执行器通讯线程优化corePoolSize从256降低至32 - 27、执行器通讯线程优化corePoolSize从256降低至32
- 28、新增任务运行模式 "GLUE模式(PowerShell) "支持PowerShell脚本任务 - 28、任务日志表状态字段类型优化
- 29、GLUE脚本文件自动清理功能及时清理过期脚本文件 - 29、GLUE脚本文件自动清理功能及时清理过期脚本文件
- 30、执行器注册方式切换优化切换自动注册时主动同步在线机器避免执行器为空的问题 - 30、执行器注册方式切换优化切换自动注册时主动同步在线机器避免执行器为空的问题
- 31、跨平台除了提供Java、Python、PHP等十来种任务模式之外新增提供基于HTTP的任务模式 - 31、跨平台除了提供Java、Python、PHP等十来种任务模式之外新增提供基于HTTP的任务模式
- 32、底层RPC序列化协议调整为hessian2 - 32、底层RPC序列化协议调整为hessian2
- 33、修复表字段 “t.order”与数据库关键字冲突查询失败的问题 - 33、修复表字段 “t.order”与数据库关键字冲突查询失败的问题
- 34、【迭代中】分片任务失败重试优化仅重试当前失败的分片 - 34、调度中心提供API服务支持通过API服务对任务进行查询、新增、更新、启停等操作
- 35、【迭代中】支持通过API服务操作任务信息 - 35、【迭代中】分片任务失败重试优化仅重试当前失败的分片
### TODO LIST ### TODO LIST
@ -1287,8 +1297,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 9、执行器Log清理功能调度中心Log删除时同步删除执行器中的Log文件 - 9、执行器Log清理功能调度中心Log删除时同步删除执行器中的Log文件
- 10、Bean模式任务JobHandler自动从执行器中查询展示为下拉框选择后自动填充任务名称等属性 - 10、Bean模式任务JobHandler自动从执行器中查询展示为下拉框选择后自动填充任务名称等属性
- 11、API事件触发类型任务更类似MQ消息支持"动态传参、延时消费"该类型任务不走Quartz单独建立MQ消息表调度中心竞争触发待定该功能与 XXL-MQ 冲突,该场景建议用后者; - 11、API事件触发类型任务更类似MQ消息支持"动态传参、延时消费"该类型任务不走Quartz单独建立MQ消息表调度中心竞争触发待定该功能与 XXL-MQ 冲突,该场景建议用后者;
- 12、任务依赖增强,新增任务类型 "流程任务",流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题 - 12、API任务触发时支持动态传参
- 13、调度中心触发任务后先推送触发队列异步触发然后立即返回。降低quartz线程占用时长。 - 13、任务依赖增强,新增任务类型 "流程任务",流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题;
- 14、任务告警逻辑调整任务调度以及任务回调失败时均推送监控队列。后期考虑通过任务Log字段控制告警状态 - 14、任务告警逻辑调整任务调度以及任务回调失败时均推送监控队列。后期考虑通过任务Log字段控制告警状态
- 15、新增任务默认运行状态任务更新时运行状态保持不变 - 15、新增任务默认运行状态任务更新时运行状态保持不变
- 16、提供多版本执行器不依赖容器版本、不内嵌Jetty版本通过配置executoraddress替换jetty通讯 - 16、提供多版本执行器不依赖容器版本、不内嵌Jetty版本通过配置executoraddress替换jetty通讯
@ -1296,8 +1306,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 18、流程任务支持参数传递 - 18、流程任务支持参数传递
- 19、SimpleTrigger 支持; - 19、SimpleTrigger 支持;
- 20、调度线程池改为协程方式实现大幅降低系统内存消耗 - 20、调度线程池改为协程方式实现大幅降低系统内存消耗
- 21、API任务触发时支持动态传参 - 21、Release发布时一同发布调度中心安装包真正实现开箱即用
- 22、Release发布时一同发布调度中心安装包真正实现开箱即用
## 七、其他 ## 七、其他

View File

@ -5,7 +5,6 @@ import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum; import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
import com.xxl.job.admin.core.thread.JobTriggerPoolHelper; import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
import com.xxl.job.admin.core.trigger.TriggerTypeEnum; import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
import com.xxl.job.admin.core.util.I18nUtil;
import com.xxl.job.admin.dao.XxlJobGroupDao; import com.xxl.job.admin.dao.XxlJobGroupDao;
import com.xxl.job.admin.service.XxlJobService; import com.xxl.job.admin.service.XxlJobService;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
@ -91,6 +90,7 @@ public class JobInfoController {
@RequestMapping("/trigger") @RequestMapping("/trigger")
@ResponseBody @ResponseBody
//@PermessionLimit(limit = false)
public ReturnT<String> triggerJob(int id) { public ReturnT<String> triggerJob(int id) {
JobTriggerPoolHelper.trigger(id, -1, TriggerTypeEnum.MANUAL); JobTriggerPoolHelper.trigger(id, -1, TriggerTypeEnum.MANUAL);
return ReturnT.SUCCESS; return ReturnT.SUCCESS;

View File

@ -128,10 +128,4 @@ public class AdminBizImpl implements AdminBiz {
return ReturnT.SUCCESS; return ReturnT.SUCCESS;
} }
@Override
public ReturnT<String> triggerJob(int jobId) {
JobTriggerPoolHelper.trigger(jobId, -1, TriggerTypeEnum.API);
return ReturnT.SUCCESS;
}
} }

View File

@ -49,18 +49,4 @@ public class AdminBizTest {
Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE); Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
} }
/**
* trigger job for once
*
* @throws Exception
*/
@Test
public void triggerJob() throws Exception {
AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl, accessToken).getObject();
int jobId = 1;
ReturnT<String> returnT = adminBiz.triggerJob(jobId);
Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
}
} }

View File

@ -43,15 +43,4 @@ public interface AdminBiz {
*/ */
public ReturnT<String> registryRemove(RegistryParam registryParam); public ReturnT<String> registryRemove(RegistryParam registryParam);
// ---------------------- job opt ----------------------
/**
* trigger job for once
*
* @param jobId
* @return
*/
public ReturnT<String> triggerJob(int jobId);
} }