xxl-job使用
这里的内容用于总结和学习,如果希望参考官方文档,请看下方的参考资料(标注为【官方文档的链接】)
第一步:docker安装xxl-job
docker 下拉取 xxl-job 的镜像(这里使用 2.4.0 版本)
docker pull xuxueli/xxl-job-admin:2.4.0
创建映射容器的文件目录
mkdir -p -m 777 /temp/xxl-job/data/applogs
第二步:拉取源代码
只需要下载源代码中的两个文件:application.properties和tables_xxl_job.sql
第三步:修改配置文件
官方文档已经写的很详细了:
第四步:执行SQL文件
在数据库中执行文件tables_xxl_job.sql(注意:这里执行的数据库和第三步配置文件中的数据库地址是一致的)
第五步: 创建容器
将第二步获取的配置文件application.properties放置在/temp/xxl-job文件夹下
docker run -p 8088:8080 \
-d --name=xxl-job-admin --restart=always \
-v /temp/xxl-job/application.properties:/application.properties \
-v /temp/xxl-job/data/applogs:/data/applogs \
-e PARAMS='--spring.config.location=/application.properties' xuxueli/xxl-job-admin:2.4.0
第六步:验证是否成功
可以通过docker ps -a查看,也可以登录http://个人ip:8088/xxl-job-admin/进行访问
账号:admin 密码:123456
OK,以上完成xxl-job的调度任务搭建
SpringBoot集成xxl-job
修改pom文件,增加依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.0</version>
</dependency>
修改配置文件application.properties
xxl.job.admin.addresses: http://个人ip:8088/xxl-job-admin //这个ip地址不能是本地电脑哦,注册的时候无法访问你本地电脑的
xxl.job.executor.appname: media-process-service
xxl.job.executor.address:
xxl.job.executor.ip:
xxl.job.executor.port: 9999
xxl.job.executor.logpath: /data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays: 30
xxl.job.accessToken: 1234567890 //和前面配置的token一致即可
创建XxlJobConfig.java
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
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() {
log.info(">>>>>>>>>>> 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;
}
}
在任务调度中心配置我们的执行器
打开我们部署的任务调度中心,进行如下配置
(注册方式选择自动注册即可,名称修改为自己项目的名称即可,appName修改为自己在application中配置的内容)
创建一个定时任务
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;
/**
* 任务处理类
*
*/
@Component
public class TestJob extends IJobHandler {
/**
* 测试任务
*/
@Override
@XxlJob("testHandler")
public void execute() throws Exception {
XxlJobHelper.handleSuccess("本次测试任务调度成功");
}
}
如果出现调用失败
原因很可能是因为你是本地电脑(可以尝试使用服务器telnet ip 端口号 是否能够正常链接)