xxl-job是什么
分布式任务调度框架
分布式
:
任务调度
:在特定的时间和条件下执行预定义的任务
xxl-job有什么
管理端
:负责配置任务,查看任务的执行日志
执行端
:定义任务,将任务注册到管理端
怎么实现
执行端
添加依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
修改配置文件
server:
port: 8081
#xxl-job
xxl:
job:
admin:
address: http://127.0.0.1:8080/xxl-job-admin
accessToken: default_token
executor:
appname: client-b-job
address:
ip: 127.0.0.1
port: 8082
logPath: /Users/hhq/Desktop/main/work_space/xxl-job-client/logs/xxl-job/
logRetentionDays: 30
配置任务执行器
package org.example.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.address}")
private String adminAddress;
@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 xxlJobSpringExecutor() {
logger.info(">>>>>>>>>>>xxl-job config init");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddress);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
创建任务
package org.example.task;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class XxlJobTask {
@XxlJob("dateTimeTask")
public void dateTimeTask() {
System.out.println(new Date());
}
}
管理端
- 执行器管理:负责管理有哪些应用
- 任务管理:管理定时任务