应用 quartz 框架
能够利用 quartz 实现程序中动静增加定时工作,步骤为创立 Job 接口的实现类,之后创立 JobDetail 指定 Job 实现类,配合创立的 Trigger 应用 Schedule 启动即可,能够参考 quartz 教程
对 xxl-job 的 admin 模块进行革新实现
xxl-job 自身反对通过页面治理端进行工作的增加,实质上是调用的后盾接口实现。在 2.3.0 版本的 xxl-job 的 admin 模块的 com.xxl.job.admin.controller.JobInfoController 类中为对工作进行增删改查的入口,业务类由 XxlJobService 实现,能够参考。须要留神的是 amdin 治理模块默认对所有申请有权限校验,不能随便拜访,须要应用注解 @PermissionLimit 加在 controller 办法上来管制是否开启权限。
/**
* 自定义增加定时工作接口,不拦挡申请
* @param jobInfo
* @return
*/
@PostMapping("/myadd")
@ResponseBody
@PermissionLimit(limit = false)
public ReturnT<String> myAdd(@RequestBody XxlJobInfo jobInfo) {return xxlJobService.add(jobInfo);
}
下面为自定义的增加工作接口,上面给出申请报文样例:
{
"jobGroup":3,
"jobDesc":"接口增加工作",
"author":"guomz",
"scheduleType":"CRON",
"scheduleConf":"0/2 * * * * ?",
"executorHandler":"demoJobHandler",
"executorParam":"aaa,ccc",
"glueType":"BEAN",
"executorRouteStrategy":"FIRST",
"misfireStrategy":"DO_NOTHING",
"executorBlockStrategy":"SERIAL_EXECUTION"
}
其中 jobGroup 为执行器在 xxl-job 数据库 xxl_job_group 的主键 id,参数与页面传递的参数基本一致,留神必填参数的值,例如后三个。之后再参照增加工作的办法批改触发工作的接口,调用执行即可。