Springcloud集成XXL-JOB任务调度
一、任务调度 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;@Beanpublic 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-adminaccessToken: default_tokenexecutor:appname: job-serviceport: 9999logpath: /data/applogs/xxl-job/jobhandlerlogretentiondays: 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页面,即可查询每次执行是否成功和执行日志。