默认的账号密码是:admin/123456
一,部署docker容器
docker run \
-e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.150.101:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 \
--spring.datasource.username=root \
--spring.datasource.password=123" \
--restart=always \
-p 28080:8080 \
-v xxl-job-admin-applogs:/data/applogs \
--name xxl-job-admin \
-d \
xuxueli/xxl-job-admin:2.3.0
最终的表结构如下:
-
xxl_job_lock:任务调度锁表;
-
xxl_job_group:执行器信息表,维护任务执行器信息;
-
xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;
-
xxl_job_log:调度日志表: 用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;
-
xxl_job_log_report:调度日志报表:用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;
-
xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
-
xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
-
xxl_job_user:系统用户表;
二,配置执行器
<!--xxl-job-->
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId>
</dependency>
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;
}
参数说明:
-
adminAddress:调度中心地址,天机学堂中就是填虚拟机地址
-
appname:微服务名称
-
ip和port:当前执行器的ip和端口,无需配置,自动获取
-
accessToken:访问令牌,在调度中心中配置令牌,所有执行器访问时都必须携带该令牌,否则无法访问。咱们项目的令牌已经配好,就是
tianji
。如果要修改,可以到虚拟机的/usr/local/src/xxl-job/application.properties
文件中,修改xxl.job.accessToken
属性,然后重启XXL-JOB即可。 -
logPath:任务运行日志的保存目录
-
logRetentionDays:日志最长保留时长
三 ,定义任务
四,注册执行器:
登录XXL-JOB控制台,注册执行器。默认的账号密码是:admin/123456
在弹出的窗口中填写信息:
五,配置任务调度
现在,执行器已经成功注册,任务也已经注册到调度中心。接下来,我们就可以来做任务调度了,也就是:
-
分配任务什么时候执行
-
如果有多个执行器,应该由哪个执行器执行(路由策略)
我们进入任务管理菜单,选中学习中心执行器,然后新增任务
在弹出表单中,填写任务调度信息:
其中比较关键的几个配置:
-
调度配置:也就是什么时候执行,一般选择cron表达式
-
任务配置:采用BEAN模式,指定JobHandler,这里指定的就是在项目中
@XxlJob
注解中的任务名称 -
路由策略:就是指如果有多个任务执行器,该由谁执行?这里支持的策略非常多:
路由策略说明:
-
FIRST(第一个):固定选择第一个执行器;
-
LAST(最后一个):固定选择最后一个执行器;
-
ROUND(轮询):在线的执行器按照轮询策略选择一个执行
-
RANDOM(随机):随机选择在线的执行器;
-
CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台执行器,且所有任务均匀散列在不同执行器上。
-
LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的执行器优先被选举;
-
LEAST_RECENTLY_USED(最近最久未使用):最久未使用的执行器优先被选举;
-
FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的执行器选定为目标执行器并发起调度;
-
BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的执行器选定为目标执行器并发起调度;
-
SHARDING_BROADCAST(分片广播):广播触发对应集群中所有执行器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务
-