xxl-job分布式定时任务
1.启动java admin项目注册到nacos
2.启动定时任务微服务注册到定时任务中心
3.在定时任务微服务写bean
4.在http://localhost:8080/xxl-job-admin/joblog?jobId=2 任务管理添加任务的bean名字和 cron表达式
//想要得到参数,使用,逗号分隔java来处理,或者使用jackson json转对象
String jobParam = XxlJobHelper.getJobParam()
5.阻塞处理策略
- 单机串行(默认)
调度进入单机执行器后,调度请求进入FIFO队列执行
- 丢弃后续调度(推荐)(丢后执行前) 调度进入单机执行器后,发现有任务执行,丢弃后到的任务
- 覆盖之前调度(不推荐)(丢前执行后)
调度进入单机执行器后,发现有任务在执行丢弃执行的任务, 清空队列,然后执行后到的任务
6.怎么实现分布式任务 executor 在界面选择分片广播 ,也可以使用轮询(集群),和指定第一个个最后一个机器执行(单机)
// 分片参数
//我知道那台机器执行哪个分片,就可以实现分布式定时任务了
int shardIndex = XxlJobHelper.getShardIndex();
int shardTotal = XxlJobHelper.getShardTotal();
XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);
// 业务逻辑
for (int i = 0; i < shardTotal; i++) {
if (i == shardIndex) {
System.out.println("aaaa");
XxlJobHelper.log("第 {} 片, 命中分片开始处理", i);
} else {
XxlJobHelper.log("第 {} 片, 忽略", i);
}
}