XXL-JOB:
官网文档地址:分布式任务调度平台XXL-JOB
GitHub地址:https://github.com/xuxueli/xxl-job
Gitee地址:https://gitee.com/xuxueli0323/xxl-job
-
拉取代码,首先执行一下doc/db下的sql文件 tables_xxl_job.sql 建立数据库以及相关表。
-
在xxl-job-admin 下的 application.properties 文件中修改一下 数据库连接配置 ,端口冲突也可以改一下端口
-
在自己的SpringBoot项目中进行以下操作:
在pom中引入依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
配置application.yml
xxl:
job:
admin:
# xxl-job后台管理界面的地址
addresses: http://127.0.0.1:8099/xxl-job-admin
executor:
# 此执行器的名称
appname: xxl-job-executor-sample
ip:
# 此执行器的端口
port: 9999
# 此执行器的日志存放路径
logpath: /data/applogs/xxl-job/jobhandler
# 此执行器的日志保存时间
logretentiondays: 30
accessToken: default_token #调度中心通讯TOKEN [选填]:非空时启用
XxlJobConfig配置类
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@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;
}
}
job类
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;
@Component
public class DemoJobHandler {
@XxlJob("jobDemo")
public String jobDemo() throws Exception {
String param = XxlJobHelper.getJobParam();
System.out.println("excuting......" + param);
Thread.sleep(2000);
return "SUCCESS";
}
}
- 启动xxl-job xxl-job-admin 下的启动类 XxlJobAdminApplication,打开http://localhost:8099/xxl-job-admin/ 进入任务调用中心首页。
- 在执行器管理中,新增执行器:
AppName:是配置文件中的 xxl.job.executor.appname=xxl-job-executor-sample
名称:展示在页面上的名称
机器地址:如果是手动录入的话,就是IPV4的地址ip:端口号
- 配置任务管理:新增任务
JobHandler 是 @XxlJob(“jobDemo”) 中的值
7.点击操作 - 执行一次
8.查看运行结果
在项目启动的时候曾经遇到一个问题:
Exception in thread “Thread-12” java.net.BindException: Address already in use: bind
本以为是端口被占用,其实并不是;
在高版本的xxl-job中(例如我引用的就是2.3.0)
在上图的@Bean(initMethod = “start”, destroyMethod = “destroy”)这里;
直接修改成@Bean即可。