当前位置: 首页 > 后端技术 > Java

程序中动态添加计划任务的方式

时间:2023-04-01 17:53:34 Java

使用quartz框架可以使用quartz实现程序中计划任务的动态添加。步骤是创建Job接口的实现类,然后创建JobDetail指定Job实现类,使用创建的Trigger启动Schedule。可以,可以参考quartz教程修改xxl-job的admin模块,实现xxl-job本身支持通过页面管理端添加任务,本质上是调用后台接口的实现。xxl-job2.3.0版本admin模块的com.xxl.job.admin.controller.JobInfoController类是增删改查任务的入口。业务类由XxlJobService实现,可以参考。需要注意的是,amdin管理模块默认对所有请求都有权限校验,不能随意访问。需要在controller方法中添加@PermissionLimit注解来控制是否开启权限。/***自定义添加定时任务接口,不拦截请求*@paramjobInfo*@return*/@PostMapping("/myadd")@ResponseBody@PermissionLimit(limit=false)publicReturnTmyAdd(@RequestBodyXxlJobInfojobInfo){returnxxlJobService.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,参数与页面传递的基本一致一致,注意需要参数的取值,比如最后三个。之后参照添加任务的方法修改触发任务的接口,调用执行即可。