分布式任务调度平台XXL-Job搭建
下载:
https://github.com/xuxueli/xxl-job
下载 然后倒入到自己的工程里面
引入后:
导入数据:跑一边
导入:
修改:
Window -->show view-->other-->Servers
把admin引入
方法:
右键:
点击add and remove 即可
启动 XXL-Job admin平台:
访问:http://localhost:8080/xxl-job-admin/
下面客户端的demo (Spring boot 的 对接到Admin平台)
上面项目中整合XXL-Job 类继承 IJobHandler类。然后通过注解 注册到XXL-Job admin 容器中去 对接到平台上去 value是注册上去的名称
下面:
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin ## 这是admin的地址
### xxl-job executor address
xxl.job.executor.appname=toov5-job #执行器的名字 起了个名字
下面分别是 spring boot的 job服务别名 地址集合
点击保存
启动执行器:
启动执行器后,会将服务器本地信息注册到admin平台。信息包括: 是否存活 定义的注解Value的值 (在先新建任务里面都会有记录了,下面的操作中可以选择的)
然后去任务管理李: 新建任务
添加相关信息后,保存。任务就开始根据预定的时间规则去运行了
可以查看日志:
分析原理:
在XXL-JOB触发规则,查询对应执行器(实际定时Job执行地址),然后再使用XXL-JOB发送请求到实际的定时JOB任务地址去执行。使用demoJobHandler名称查找对应jvm服务器上JobHandler容器。
获取到类的信息,反射进行执行。使用demoJobHandler名称查找对应的jvm服务器上@JobHandler容器获取到类的信息,再使用反射机制执行
注解底层实现:
@JobHandler(value = "demoJobHandler") //job 注册到容器中的名称 下面的方法是执行的定时job 底层实现 value demoJobHandler 名称 对应存放类的class地址。然后反射获取方法执行之
原理:
搭建xxl-job平台 ,然后创建执行器。netty会帮助创建服务端口号。执行器启动时候,会把服务信息注册到xxl-job平台。
创建执行器(实际任务地址)
然后任务管理 新增任务 jobhandler Corn表达式
首先在xxl-job平台出发job 然后获取执行地址