当前位置:   article > 正文

【springboot】集成xxl-job(分布式任务调度平台)_springboot 集成xxl-job

springboot 集成xxl-job

XXL-JOB是一个分布式任务调度平台,具有丰富的功能和良好的扩展性。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 架构设计

    • 调度中心:作为整个系统的控制中心,负责任务的分发、执行监控以及结果收集等功能。它可以通过HTTP方式向执行器发送调度请求,也可以接收执行器主动推送的任务执行结果。
    • 执行器:部署在各个业务服务节点上,负责接收调度中心的任务调度指令并执行相应的任务逻辑。每个执行器可以独立运行,它们之间互不影响,能够灵活地进行扩容和缩容。
  2. 任务类型

    • 一次性任务:只执行一次的任务,比如初始化数据导入。
    • 定时任务:基于Cron表达式定期执行的任务。
    • 手动执行任务:支持用户手动触发执行的任务。
  3. 核心功能

    • 分布式调度:支持跨机器、跨数据中心部署执行器,调度中心可以根据执行器的负载情况进行智能调度。
    • 弹性伸缩:执行器可以动态上下线,上线后自动加载任务,下线后自动转移任务至其他执行器。
    • 任务执行跟踪与日志:对每个任务执行过程进行详细的记录,包括开始时间、结束时间、耗时、状态(成功、失败)、错误信息、执行日志等。
    • 失败重试与报警:任务执行失败后支持重试,且有完善的报警机制,如邮件通知、企业微信、钉钉等。
    • 任务阻塞处理策略:对于执行超时或者业务异常导致的任务长时间阻塞,可以设置超时后杀死任务进程,防止故障蔓延。
  4. 使用方法

    • 在Spring Boot项目中集成XXL-JOB,首先需要引入相关依赖并配置执行器基本信息,如执行器地址、AppName等。
    • 创建任务处理器(IJobHandler的实现类),并在其中编写具体业务逻辑。
    • 登录XXL-JOB的调度中心Web界面,添加新的任务并关联已定义好的任务处理器,设置好任务类型、执行参数、触发规则等属性。

总之,XXL-JOB提供了一种简单而强大的分布式任务调度解决方案,广泛应用于数据同步、定时统计、定时邮件发送等各种定时任务场景。
SpringBoot集成XXL-JOB分布式任务调度平台,主要包括以下步骤:

  1. 添加依赖

在SpringBoot项目的pom.xml文件中添加XXL-JOB的starter依赖:

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>{latest-version}</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

请将{latest-version}替换为XXL-JOB的最新版本号。

  1. 配置XXL-JOB

在application.yml或application.properties中配置XXL-JOB的相关信息,例如:

# application.yml
xxl:
  job:
    admin:
      addresses: http://localhost:8080/xxl-job-admin # 调度中心部署跟地址
    executor:
      appname: demoApp # 执行器AppName
      address: localhost:9999 # 执行器注册地址
      ip: localhost # 执行器IP
      port: 9999 # 执行器端口
      logpath: /data/applogs/xxl-job/jobhandler # 执行器日志路径
      logretentiondays: 30 # 日志保留天数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 创建执行器

创建一个继承自com.xxl.job.core.executor.XxlJobExecutor的类,并在Spring Boot的主类中通过@Bean注解注入到Spring容器中:

import com.xxl.job.core.executor.impl.XxlJobExecutor;

@Configuration
public class XxlJobConfig {

    @Bean
    public XxlJobExecutor xxlJobExecutor() {
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
        xxlJobExecutor.setAdminAddresses("http://localhost:8080/xxl-job-admin");
        xxlJobExecutor.setAppname("demoApp");
        // 其他配置项...
        return xxlJobExecutor;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 创建任务处理器

实现com.xxl.job.core.handler.IJobHandler接口,编写具体的业务逻辑:

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;

public class DemoJobHandler implements IJobHandler {

    @Override
    public ReturnT<String> execute(String param) throws Exception {
        System.out.println("XXL-JOB, Hello World.");
        // 在这里编写你的任务处理逻辑
        return ReturnT.SUCCESS;
    }

    // 注意:BeanName需要与xxl_job_registry中的jobHandler一致
    @Override
    public String toString() {
        return "DemoJobHandler";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  1. 注册任务到调度中心

登录XXL-JOB管理后台,新建任务并选择刚刚创建的任务处理器。

以上就是在SpringBoot项目中集成XXL-JOB的基本步骤,具体根据实际需求可能还需要进行更细致的配置和优化。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/499771
推荐阅读
相关标签
  

闽ICP备14008679号