CodeWorld-Cloud-Shop XXL-JOB动态创建任务详解篇2—奶妈级教学
前言
我们在上一节CodeWorld-Cloud-Shop XXL-JOB动态创建任务详解篇1—奶妈级教学讲解了XXL-JOB我们在创建任务的缺陷
那么这一节我们呢将继续实现怎么来动态创建任务
修改xxl-job-admin的接口
我们知道了,我们在调用接口前呢,就需要登录才能调用,不过后来我们发现可以加上一个 PermissionLimit
并设置limit为false
那么这样就不用去登录就可以调用接口
将 JobInfoController
添加如下接口
// 自定义方法 |
我们在上面可以看见大致和原来的添加接口一致,这里我们加上了 |
这里我们只需要添加这一个接口就可以啦,里面实现的逻辑就和原来的一样,不做任何的修改
我们只需要提供需要的参数就可以啦
创建一个新的项目
我们这里实现的一个需求就是
我们创建一个User用户,在创建时间的基础上加上1分钟,在这个时间自动添加
例如:2020-01-01 12:00:00这个时间创建 那么我们应该在2020-01-01 12:00:01这个时间添加
POM文件
<dependency> |
application.yml文件
server: |
这些配置我相信你再熟悉不过了吧,我们在第一节就看见过啦
那么既然配置文件有了,那么我们也要创建一个配置类
XxlJobConfig
XxlJobConfig
|
基本的工具类
DateUtils 日期工具类
/** |
JsonUtils 工具类
public class JsonUtils { |
创建Response响应信息
ApiResponse
|
创建一个domain
XxlJobInfo
|
那么这个就是我们需要传入的参数
XxlUtil工具类
XxlUtil
|
这里对代码进行讲解下
/** |
Map<String, Object> params = new HashMap<>(); |
在上面我们提到根据执行器名称来查询执行器id,那么这个接口在哪里呢,其实和任务添加的一样,我们也需要去开发一个新的接口
修改xxl-job-admin中的JobGroupController
添加如下接口
"/loadByAppName") ( |
继续创建dao下的方法
XxlJobGroup loadByAppName(Map<String, Object> map); |
创建查询语句
<select id="loadByAppName" parameterType="hashmap" resultMap="XxlJobGroup"> |
这样我们的执行器id就查询出来了
好了,既然我们的远程调用接口写好了,我们将来写本地的接口
首先创建UserController
UserController
|
接着UserService
UserService
public interface XxlService { |
再接着UserServiceImpl
UserServiceImpl
|
这里呢我们就直接指定创建用户了,重点不是用户而是我们的XxlJobInfo
xxlJobInfo.setJobDesc("测试用户定时添加"); // 描述信息 |
那么到这里我们接口写完了
那么我们应该怎么执行任务呢
UserTask
UserTask
|
这个就是我们执行任务的方法,可以看见我们在这个@XxxlJob(value=”addUser”)和参数里的xxlJobInfo.setExecutorHandler(“addUser”); 是一一对应的
好了到这里我么的全部详解就说明完了
不过说了这么多,到底行不行呢?
实践
首先先启动xxl-job-admin这个项目
启动本地项目
看见这个就是xxl加载成功啦
我们需要去创建一个执行器,名称是xxl-job-test
这个就不用上图片了吧,去CodeWorld-Cloud-Shop XXL-JOB入门详解篇—奶妈级教学
调用接口
http://localhost:10001/codeworld-xxl/add-job
出现这个说明接口调用成功啦
再来看我们的控制台
说明我们的任务已经添加成功啦
然后等着1分钟后看看会不会执行任务
哇哦,看来执行成功了,那么我们就这样成功了。
那么轮播图的问题就解决了,动态创建任务实现实现了轮播图的上线和下线
代码地址
好了,本次的技术解析就到这里了?如果觉得不错的话,点亮一下小星星codeworld-cloud-shop
只看不点,不是好孩子哦!!