XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
详细的特性和优点参考官网地址:https://www.xuxueli.com/xxl-job/
一、任务调度
0.下载官方源码
- /doc :文档资料
- /db :“调度数据库”建表脚本
- /xxl-job-admin :调度中心,项目源码
- /xxl-job-core :公共Jar依赖
- /xxl-job-executor-samples :执行器,Sample示例项目(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
1.解压后可以在 xxl-job-2.3.1\doc\db 找到数据文件,导到自己的数据库中
- xxl_job_lock:任务调度锁表;
- xxl_job_group:执行器信息表,维护任务执行器信息;
- xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;
- xxl_job_log:调度日志表: 用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;
- xxl_job_log_report:调度日志报表:用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;
- xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
- xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
- xxl_job_user:系统用户表;
2.将整个项目使用开发工具打开,修改数据库连接地址
3.启动xxl-job
访问:http://localhost:3366/xxl-job-admin/toLogin
注:这里我修改了端口为3366
默认账号:admin
默认密码:123456
4.新建执行器
5. 新建调度任务
二、java执行方法
1.配置application.properties
xxl.job.admin.addresses=http://127.0.0.1:3366/xxl-job-admin #注意端口和项目名称
xxl.job.accessToken=
xxl.job.executor.appname=mytest #执行器名称
xxl.job.executor.address=
xxl.job.executor.ip=127.0.0.1
xxl.job.executor.logretentiondays=30
xxl.job.executor.port=2000
xxl.job.executor.logpath=E:/java/projects/test.log
配置文件说明
2.新建XxlJobConfig
package com.ddl.test.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 final 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;
@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.创建测试类
@Slf4j
@Controller
public class TestController {
/**
* 测试
* @return
*/
@XxlJob("helloword") !!!!!注意名称和任务配置的一致
public void hello(){
log.info("hello word--"+ DateUtil.now());
}
}
三、测试
1.启动java项目
2.启动调度任务
3.看打印日志,出现
以下内容则成功