本节主要内容:
1、修改xxl-job-admin源代码;
2、将xxl-job-admin服务注册到nacos;
3、模拟remote-module服务远程调用xxl-job-admin api实现动态生成任务;
流程图:
一、改进xxl-job-admin源码
1.1 将xxl-job-admin拆分为xxl-job-admin-provider和xxl-job-admin-server两个模块
在xxl-job-admin模块下右键->new->Module->选择maven 下一步->选择所属父级模块、修改模块名称->点击finish完成创建。
若出现pom.xml文件被忽略(文件名称灰色且文件名称有一个横杠),则需要进入flie->settings->build, Execution,Deployment->build tool->maven->ignore file 去除忽略pom文件的选项->ok。
同样的方式创建xxl-job-admin-server模块
1.2 将原来xxl-job-admin模块的src目录的文件拷贝到xxl-job-admin-server模块
如有报错,则重新引入依赖路径解决报错问题。
1.3 增加依赖包
1.3.1 在最外层的pom.xml加入lombok依赖包
1.3.2 在xxl-job-admin模块的pom.xml加入openfeign、loadbalance、lombok依赖包
1.3.3 xxl-job-admin-server的pom.xml加入如下依赖包
1.4 在启动类增加如下注解和扫描信息
1.5 修改xxl-job-admin-provider模块代码
1.5.1 增加对外开放接口
1.5.2 服务熔断类
1.5.3 数据传输对象dto
二、将xxl-job-admin服务注册到nacos
2.1 上面我们已经将需要的依赖和注解加入xxl-job-admin模块中。还需要将nacos配置加入配置文件中即可
至此xxl-job-admin模块的代码调整完成。
三、remote-module服务远程调用xxl-job-admin api实现动态生成任务
3.1 引入xxl-job-admin-provider模块
3.2 启动类增加包扫描路径
3.3 增加测试代码
3.4 测试最后的效果
3.4.1 启动xxl-job-admin-server
3.4.2 启动remote-module
3.4.3 查看nacos服务注册
3.4.4 利用postman发送请求,查看打印日志
这个例子只是模拟动态生成任务,请大家按照这个思路自行实现补全逻辑。
五、本系列文章代码地址:
git@gitee.com:springboot_lbg_demo/xxl-job-remote.git
六、总结
本系列文章主要是讲解xxl-job的部署及整个微服务springcloudalibaba + nacos,实现动态新增定时任务,实现了定点执行任务的效果,而不是每隔几分钟或者几秒钟整体刷一遍。当然本系列课程只是着重在于使用xxl-job这个优秀的定时任务框架及结合一些使用定时任务的场景,要使用好xxl-job还需考虑较多的问题,比如分布式事务、微服务中的灰度和生产分组如何进行数据隔离等问题。