一、任务调度 XXL-JOB,这里选用2.3.1版本。
源码下载地址:GitHub - xuxueli/xxl-job at 2.3.1
官方文档地址:分布式任务调度平台XXL-JOB
二、其包括任务调度器和任务执行器,调度器需要根据下载下来的源码单独部署。
如下图,xxl-job-admin为调度器源码。
三、配置调度器
1.执行根目录 xxl-job/doc/db/ 下的sql数据库脚本,tables_xxl_job.sql
2.把源码导入IDE中,修改 xxl-job-admin 下application.yml中的数据库配置链接,修改为1中执行的sql数据库地址即可。
四、运行xxl-job-admin 下执行程序 XxlJobAdminApplication
浏览器访问: localhost:8080/xxl-job-admin 默认登录账号密码:admin/123456
五:创建XXL执行器 ,工程模块名 如 cloud-job ,集成XXL-JOB,
1. pom中添加依赖:
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
2.创建配置类 jobconfig
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;
/**
* 描述:job配置类
*
* @author winy_work
* @date 2023-03-21 16:26
*/
@Configuration
public class JobConfig {
private Logger logger = LoggerFactory.getLogger(JobConfig.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;
@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;
}
}
3. yml中添加xxljob配置项,顶格写。 其中addresses是上面调度器的IP地址。
#xxl-job配置项
xxl:
job:
admin:
addresses: http://ip:8080/xxl-job-admin
accessToken: default_token
executor:
appname: job-service
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
六、添加测试类
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* 描述:任务调度执行器测试类
*
* @author winy_work
* @date 2023-03-21 16:26
*/
@Component
public class TestJobHandler {
private static Logger logger = LoggerFactory.getLogger(TestJobHandler.class);
/**
* 测试
*/
@XxlJob("testJobHandler")
public void lmJobHandler() throws Exception {
// 调度器admin打印日志
XxlJobHelper.log("XXL-JOB, Hello World----");
// 业务日志
logger.info("执行测试--------------");
}
}
七、登录进入第四点 中admin调度器界面
1. 首先点击执行器管理 tab页面,新增一个执行器,选择自动注入
2. 再点击任务管理 tab页面,新增一个任务,bean运行模式,JobHandler 填入测试类的xxl定义的bean, testJobHandler , 填入cron 执行时间即可。
3.保存成功后,每条任务后有个操作按钮,可以选择 启动 或执行一次。
4.点击调度日志 tab页面,即可查询每次执行是否成功和执行日志。