SpringBoot整合xxl-job实现定时任务

概要

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 的配置中,addressport 是 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 通信。

总之,addressport 的配置是用于指定 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还提供了一些进阶功能,包括:

  1. 任务分组:可以将任务按照业务逻辑分组,方便管理和监控。

  2. 任务参数:支持为任务传递参数,方便定制化任务执行逻辑。

  3. 任务依赖:允许设置任务间的依赖关系,确保任务按照正确的顺序执行。

  4. 任务路由策略:支持多种任务路由策略,例如故障转移、轮询、一致性Hash等,提高任务执行的灵活性和可靠性。

  5. 任务失败处理:可以设置任务失败的处理策略,例如重试、告警、忽略等,保证任务执行的稳定性和可靠性。

  6. 任务执行日志:自动记录任务执行的日志,方便排查问题和监控任务执行情况。

  7. 任务调度管理:提供可视化的调度管理界面,支持动态添加、删除、暂停、恢复任务等操作。

  8. 任务执行器集群:支持多个执行器节点组成集群,提高任务执行的并发能力和容错性。

  9. 分片广播任务:支持将任务分片执行,每个分片在不同的执行器节点上并行执行,提高任务执行效率。

  10. 动态任务加载:支持动态加载任务,无需重启执行器即可添加新的任务。

这些功能使得xxl-job在任务调度和执行方面更加灵活、高效,适用于各种复杂的定时任务场景


❤觉得有用的可以留个关注❤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值