当前位置 博文首页 > RemainderTime:框架整合(一)- 分布式调度框架xxl-job的简单使
xxl-job是一款分布式调度框架,可以配置时间来定时启动项目,一般使用于项目服务多但执行时间较短,想快速启动等应用场景。
这里使用的是window10上的docker进行安装
注意:安装xxl-job之前需要先在docker上安装mysql
安装步骤可参考另一篇博文(第4、5点):记录(三)Docker安装镜像操作相关命令.
docker安装成功,先启动mysql再启动xxl-job-admin
根据配置的ip和端口访问本地路径:http://localhost:8089/xxl-job-admin/
默认账户密码: admin , 123456
xxl:
job:
admin:
addresses: http://127.0.0.1:8089/xxl-job-admin #本地调度中心地址
executor:
appname: xxl-job-executor-sample #执行器地址
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath: D:/xxl-job
# port: 10000 # 注:使用路由策略为分片模式时不要配置端口
**
* @program: rabbitmq-demo
* @description: xxl-job执行器
* @author: xf
* @create: 2021-05-30 16:47
**/
@Component
@Slf4j
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.logpath}")
private String logPath;
// @Value("${xxl.job.executor.port}")
// private Integer port;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.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;
}
}
2.
3.
注:路由策略,阻塞处理策略 着重使用
/**
* @program: rabbitmq-demo
* @description: BEAN模式开发
* @author: xf
* @create: 2021-05-30 17:08
**/
@Component
@Slf4j
public class MyxxLJobHandler {
@XxlJob("myxxLjobHandler")
public ReturnT<String> demoJobHandler() throws Exception {
XxlJobHelper.log("XXL-JOB, Hello World.");
//路由策略:使用分片模式,耗时减半
int shardIndex = XxlJobHelper.getShardIndex();//第几个执行器
int shardTotal = XxlJobHelper.getShardTotal();//总共多少个执行器
List<Integer> list = Arrays.asList(1,2,3,4);
list.forEach(x->{
//进行取模过滤不同的数据
if(x%shardTotal==shardIndex){
log.info("执行第"+x+"条数据------");
}
});
return ReturnT.SUCCESS;
}
}
注:使用分片模式时,配置文件中不要自己配置端口,不然启动第二个执行器时,会报端口冲突的异常。不配做xxl-job会自动分配端口号
修改路由策略为分片模式
执行一次任务
查看控制台
完成,奥利给。
注:阻塞处理策略:一般选择丢弃后续调度(具体使用效果步骤略),自己记住就好啦