文章目录
- 首先引入依赖
- 配置信息
- 配置类
- 定义定时任务执行方法
- 配置任务执行器
- 配置任务执行计划
在集成 XXL-job
前,首先确保部署了 XXL-job
的 admin 服务, 如果还没有部署的话请参照 Docker安装部署XXL-Job 将 XXL-job 部署起来.
此时, XXL-job 已经部署好了, 下来一步一步的来集成 XXL-job.
首先引入依赖
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
配置信息
# xxl-job
xxl:
job:
admin:
addresses: http://xxml-job admin服务IP:服务端口/xxl-job-admin/ # 任务中心地址
accessToken:
executor:
appname: my-job # 任务名称 见名之意且唯一
address:
ip:
port: 19999 #指定任务工程与admin工程心跳检测端口 注意该端口不是你的服务的端口,是特别指定的端口
logpath: ./logs/xxl-job/stock-job/ # 日志文件路径
logretentiondays: 30 # 日志文件保存天数
配置类
配置完毕后,工程底层通过 XxlJobConfig
配置类加载配置信息,实现 xxljob
相关资源的初始化工作:
加入如下配置类:
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@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;
/** Spring整合XXL-JOB任务执行器
* 该执行器可调度当前工程下的一些子任务
*/
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
logger.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;
}
}
定义定时任务执行方法
@Slf4j
@Component
public class SampleXxlJob {
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {
// 打印时间
System.out.println("hello XXL-job....." + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
}
配置任务执行器
注意 AppName 就是在配置文件中配置的.
ip是自己服务的ip,注意不是xxljob服务的ip. 端口是配置的心跳监听的端口.
配置任务执行计划
点击上面的操作开启任务
后端就会看到任务执行了:
至此, 你的SpringBoot项目就集成了XXL-job了.