看了很多网上的版本,思路描述的都不是很清晰,都只是几步操作就完成了,看效果,导致容易走入弯路(不排除是自己理解能力把),最开始以为是把admin模块集成到项目,后来测试了会,才明确是服务模块,无代码侵入,直接引用,少了很多思路明确分析,所以记录一下心得,方便后续上手
官方下载地址最新版:https://www.xuxueli.com/xxl-job/
下载项目结构示例图
下载项目结构如图所示,其实主要是启动admin模块
思路:类似于服务端。运行思路就是引入xxl-job-core包到需要的项目,配置好过后,就可以注册到admin服务中,通过自带的页面就可以看到对应定时任务
接下来开始操作:
第一步:在xxl-job-admin中配置自己的数据库
导入sql文件: ./doc/db/tables_xxl_job.sql 到数据库
有需要或者想尝试配置邮件接收异常信息可以配置 spring.mail.**
logback.xml中间改变日志配置路径,(可以自定义路径)
<property name="log.path" value="./logs/xxl-job-admin.log"/>
就可以启动admin模块了,访问http://192.168.0.177:8080/xxl-job-admin 即可看到页面
默认用户名 :admin 密码: 123456
第二步: 配置客户端
引入jar包
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>最新版本</version>
</dependency>
上配置:
xxl:
job:
admin:
addresses: http://192.168.0.177:8080/xxl-job-admin #服务器启动的 服务地址
accessToken: default_token
executor:
# 执行器的应用名称
appname: xxlJobTest
# 执行器注册 [选填]:优先使用该配置作为注册地址
address:
# 执行器IP [选填]:默认为空表示自动获取IP
ip:
# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999
port: 8081
# 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath: E:\\www\\ffw\\log
#logpath: /data/logs/mls/job
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
logretentiondays: 30
服务注入配置
@Configuration //是否开启xxl-job定时任务,注释掉 //@Configuration 则不开启定时任务
@Data
@Slf4j
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.address}")
private String address;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
XxlJobHelper.log(">>>>>>>>>>> xxl-job config init.>>>>>>>>>>>");
System.out.println("=============== xxl-job config init.===============");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
编写测试用例
@Slf4j
@Component
public class XxlJobTest{
@XxlJob(value = "xxlJobTest")
public void xxlJobTest() {
System.out.println("---------xxlJobTest定时任务执行成功--------");
}
}
启动项目即可完成,看着一下表示启动成功
第三步:测试用例
手动创建,选择bean注入模式
接下来就可以执行一次,看看效果