转自:https://blog.csdn.net/weixin_44055234/article/details/106565516
————XXL-JOB*是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。且支持线上编写调度任务。
如何集成?
去gitee或者github下载源代码 goto xxl-job
- 下载或者克隆后用idea 打开项目或直接用idea克隆项目到本地
- 在项目的doc文件夹下有个db文件夹 ,db文件夹下的sql脚本是xxl-job运行最基本的数据库和表,用sqlyol或Navicat
运行脚本,或者其他方式执行sql脚本
-
在xxl-job-admin项目中的application.properties中配置相关属性
xxl-job-admin是调度器 所以得先启动,如果执行器启动找不到调度器会报连接异常把刚刚执行sql脚本的数据库连接和密码配置到application.properties中 其他属性可有所需求在进行配置
- 1
- 2
-
等待idea自动导包完成 然后使用maven工具 先把项目clear 在install 或者xxl-job-admin这个模块需要的模块 和调度模块需要的模块 install
install 后jar包会存在自己的本地仓库,之后可以直接引入
- 找到xxl-job的启动类 启动项目,或者直接打包成jar包 运行也可以
启动成功后浏览器访问 http://127.0.0.1:8080/xxl-job-admin 就可以看到登录页面
默认账号密码是 admin 123456
登录后
因为之前有测试过所以有数据
如何使用? 编写执行器
6. 新建spring boot 工程 在pom文件中导入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.1-SNAPSHOT</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
这两个坐标是必须的 如果没有spring-boot-starter-web 会无法启动
- 编写application.properties中的配置还有logback.xml复制到resources下,这个文件可以自己编写,为了方便我是从xxl-job-admin模块下resources文件中拷贝过来的
- 编写配置类来读取application.properties的配置
这里我是直接复制xxl-job-admin的配置类
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.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;
}
/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 编写需要定时执行的代码,也就是调度器执行的执行器
在需要执行的方法加上@XxlJob 注解 并且取名,之后在调度器中好区分,否者无法调度
注:Returnt<>(200,"…")中 code 200是成功
- 配置完毕后启动我们自己创建的工程,在此之前必须启动xxl-job-admin 否者会报错
在xxl-job-admin的管理页面新增执行器,执行器管理->新增->填写相关信息
appname是之前在我们自己工程里application.properties配置的
名称可随便取,只是个区分
机器地址可手动填写多个,可做高可用
如果你的执行器是多个的话他会用appName来区分,多个执行器介意手动填写
- 在任务管理中找到刚刚创建的执行器,选中- 新增
任务参数会传递到执行器中
其他参数见名知意
- 创建好任务后可在点击操作任务,点启动后执行器就会执行
配置任务的时候如果运行模式是GLUE 可以在线编写调度器代码和脚本,支持多语言
运行后可在运行报表中查看调度情况,也可以查看调度日志
调度器集群
一个调度器在执行另外一个不会干涉