文章目录
概要
XXL-Job
是一个分布式任务调度平台,它提供了可视化
的任务管理界面和强大的任务调度功能。XXL-Job 可以用于管理和调度各种定时任务、数据处理任务等。
XXL-Job 与 Spring Task 的区别和优势:
- 分布式支持:相比于 Spring Task,XXL-JOB具有更强的分布式支持和可扩展性。它适用于复杂的分布式系统和大规模任务管理场景。
- 可视化管理:XXL-JOB提供了任务的可视化管理界面,方便配置和监控。
- 动态修改任务状态:XXL-JOB支持动态修改任务状态、启动/停止任务,以及终止运行中的任务,即时生效。
- 执行器HA(分布式):XXL-JOB支持任务分布式执行,执行器支持集群部署,可保证任务执行的高可用性。
- 注册中心:执行器会周期性自动注册任务,调度中心将自动发现注册的任务并触发执行。
配置启动xxl-job-admin项目
下载xxl-job: 官方GitHub地址
第一步:从 GitHub 上下载 XXL-Job 项目,用IDEA打开,配置xxl-job-admin,修改配置文件 application.properties(配置数据库连接信息)
第二步:启动xxl-job-admin项目
游览器访问:http://localhost:8080/xxl-job-admin
SpringBoot 中整合 XXL-Job
一、引入依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
二、application.yml配置 XXL-Job 的相关信息
注意 application.yml 中
xxl:
job:
accessToken: default_token
要和 \xxl-job-admin\src\main\resources\application.properties
这个配置文件中的保持一致
server:
port: 8888
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.113.231:3306/order?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
username: root
password: root
xxl:
job:
accessToken: default_token
admin: # 管理后台的配置
addresses: http://127.0.0.1:8080/xxl-job-admin
executor: # 执行器相关的配置
address: ''
appname: appname-hac
ip: ''
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
port: 9999
在这个 XXL-Job 的配置中,address
和 port
是 Executor【执行器】 的配置项,用于指定 Executor 的地址和端口号。
address: ''
:
这里的空字符串表示 Executor 的地址为空,意味着 Executor 将会使用本机的 IP 地址。这通常是指定 Executor 与 XXL-Job Admin 的通信地址。如果你希望 Executor 使用本机的 IP 地址,则可以保留这个配置为空字符串。如果要指定特定的 IP 地址,可以在 address
中填写相应的 IP 地址。
port: 9999
:
这个配置项指定了 Executor 的监听端口号,即 Executor 启动后会监听的端口。在这个例子中,Executor 将会监听 9999 端口。这个端口号通常用于 Executor 提供的 HTTP API 接口,用于接收 XXL-Job Admin 分配的任务并执行。在 XXL-Job Admin 中配置的执行器的地址和端口号需要与 Executor 的配置保持一致,以确保 Admin 能够正确地与 Executor 通信。
总之,address
和 port
的配置是用于指定 Executor 与 xxl-job-admin 之间通信的地址和端口信息。
三、编写配置类
@Configuration
public class XxlJobConfig {
@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() {
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;
}
}
四、编写定时任务
@Component
public class TestTask {
public static int i=0;
@XxlJob(value = "test")
public void test(){
System.out.println("定时任务:"+(i++));
}
}
xxl-job-admin新增 执行器 任务
访问http://localhost:8080/xxl-job-admin
一、新增执行器
执行器
其实可以理解为自己的一个微服务
AppName在执行器中配置的,要和xxl-job服务端创建的保持一直
注: 注册方式可选择自动注册
,省事
二、新增任务
运行模式BEAN,就是对象的方式
然后启动:
三、效果
总结
除了基本的定时任务功能外,xxl-job还提供了一些进阶功能,包括:
-
任务分组:可以将任务按照业务逻辑分组,方便管理和监控。
-
任务参数:支持为任务传递参数,方便定制化任务执行逻辑。
-
任务依赖:允许设置任务间的依赖关系,确保任务按照正确的顺序执行。
-
任务路由策略:支持多种任务路由策略,例如故障转移、轮询、一致性Hash等,提高任务执行的灵活性和可靠性。
-
任务失败处理:可以设置任务失败的处理策略,例如重试、告警、忽略等,保证任务执行的稳定性和可靠性。
-
任务执行日志:自动记录任务执行的日志,方便排查问题和监控任务执行情况。
-
任务调度管理:提供可视化的调度管理界面,支持动态添加、删除、暂停、恢复任务等操作。
-
任务执行器集群:支持多个执行器节点组成集群,提高任务执行的并发能力和容错性。
-
分片广播任务:支持将任务分片执行,每个分片在不同的执行器节点上并行执行,提高任务执行效率。
-
动态任务加载:支持动态加载任务,无需重启执行器即可添加新的任务。
-
…
这些功能使得xxl-job在任务调度和执行方面更加灵活、高效,适用于各种复杂的定时任务场景
❤觉得有用的可以留个关注❤