【Spring Boot 快速入门】十七、Spring Boot 集成XXL-JOB分布式任务调度平台

简介: 【Spring Boot 快速入门】十七、Spring Boot 集成XXL-JOB分布式任务调度平台

什么是XXL-JOB


  XXL-JOB是一个分布式任务调度平台,XXL-JOB具有操作简单、动态配置、动态配置、弹性扩容缩容、自动注册、各种测量配置、任务进度监控、跨语言、全异步、自定义任务参数、邮件报警、故障转移、用户管理、权限控制、数据加密、动态分片等各种特性,为我们在项目中提供了一个强大的全面的任务调度平台。

  XXL-JOB起始于2015年,经过近几年的发展和完善,已经越发的全面强大。小编今天在github中查看,目前有19.8k的star,8.4k的fork,有1692次的commits,至今,XXL-JOB已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和大数据作业等,据不完全统计,目前有近500家大中型企业子在使用。

github地址

  使用XXL-JOB主要分为两步配置即可完成一个简单的任务调度中心,第一步,配置调度中心,第二步配置执行器。下面开始部署。


快速开始:


  本次Spring Boot 集成XXL-JOB分布式任务调度平台使用的环境是:

Maven
    Jdk1.8
    Mysql5.7
    2.1.2 xxl-job


配置调度中心


  下载完XXL-JOB源码之后,在项目文件中找到数据库脚本信息,执行一个数据库脚本,为配置中心初始化数据。


打开项目


  如下图是下载完成之后的XXL-JOB项目结构。

image.png


执行SQL脚本


  数据库脚本信息截图如下:


image.png


  数据库主要是初始化配置中心和初始化一个管理员用户,基本表就包含用户表、执行器表、日志表、分组表、配置表、线程锁表等相关表。表中也有相关字段的描述,比较全面介绍。


配置参数


  执行完SQL脚本之后,根据自己需要修改application.properties配置文件,主要有端口、项目名称、报警邮件配置、数据库配置、调度线程池最大线程配置、调度中心日志表数据配值等,配值方式与Spring boot配置方式相同。基本上采用默认的配置即可,只需要修改一个数据源。


### web
server.port=8080
server.context-path=/xxl-job-admin
### actuator
management.context-path=/actuator
management.health.mail.enabled=false
### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
spring.datasource.username=test
spring.datasource.password=12345678test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-interval=30000
## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### xxl-job, log retention days
xxl.job.logretentiondays=30


启动调度中心


  配置好所有的参数之后,启动XxlJobAdminApplication,任务调度中心启动完成之后,浏览器输入如下地址,进入管理平台。


  默认地址为:http://127.0.0.1:8080/xxl-job-admin


进入后台


  输入默认的用户名密码admin/123456,即可登陆到平台。


image.png


默认首页是数据报表,可以一目了然的看到相关任务调度信息。


image.png


配置执行器


  本次配置执行器是基于Spring Boot搭建一个执行器,在项目源码中作者也给出了相关的示例,大家可以参考。首先在IDEA中搭建一个基础的Spring Boot项目。搭建一个最基础的就可以,本次将以现成的项目进行介绍,如需要Spring Boot项目可以参考往期的文章链接。


引入pom


  在Spring Boot项目中引入xxl-job-core包,注意版本需要与Spring Boot 版本相互兼容,否则会报很多异常。


<!--定时调度项目-->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.1.2</version>
        </dependency>


XxlJobConfig配置类


  创建一个XxlJobConfig配置类,便于读取配置文件中的配置信息。加入@ComponentScan注解,扫描的包是执行器所在的位置包名。这样一个简单的XxlJobConfig配置类就完成了。


@Configuration
@ConditionalOnProperty(prefix = "xxl", value = "enable", havingValue = "true")
@ComponentScan(basePackages = "com.juejin.scheduling")
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;
    @Value("${xxl.job.executor.appname}")
    private String appName;
    @Value("${xxl.job.executor.ip}")
    private String ip;
    @Value("${xxl.job.executor.port}")
    private int port;
    @Value("${xxl.job.accessToken}")
    private String accessToken;
    @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.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
}


编写执行器


  在上一节中已经制定了执行器所在的包,下面在执行此包中创建一个执行器,需要加入@Component注解。在类中创建执行器方法,加入@XxlJob("TestXXLScheduled"),其中指定执行器方法名称,需要在调度中心后台中配置这个注解方法,以便调度中心调用此方法。在方法中可以加入自己的业务逻辑即可。这样一个简单的执行器几配置好了。


@Slf4j
@Component
public class TestXXLScheduled {
    @XxlJob("TestXXLScheduled")
    public ReturnT<String> TestXXLScheduled(String param){
     XxlJobLogger.log("测试XXL-JOB分布式任务调度平台---开始");
        //业务逻辑代码块
        System.out.println("测试XXL-JOB分布式任务调度平台执行了");
      XxlJobLogger.log("测试XXL-JOB分布式任务调度平台---结束");
    }
}


添加执行器


  登录XXL-JOB分布式任务调度平台,进入到执行器管理中,选择新增执行器,依次输入AppName、名称、排序等信息,由于是测试使用,选择手动注册,直接填写127.0.0.1:8081本地的执行器项目的地址即可。然后点击保存。

image.png


  在任务管理中新增一个任务,选择刚刚创建的执行器,依次输入任务名称,执行时间间隔、选择路由策略、执行策略、然后输入 @XxlJob("TestXXLScheduled")中的名称TestXXLScheduled到JobHandler中,输入负责人即可,任务就配置完成了。


image.png


运行执行器


  为了便于测试,本次将执行间隔设置为5秒,分别启动控制中心和执行器两个项目。可以看到执行器中输出了日志信息,代表执行器创建成功,任务在执行了。

image.png


结语


  好了,以上就是Spring Boot 集成XXL-JOB分布式任务调度平台的详细过程


目录
相关文章
|
1月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
1月前
|
数据采集 DataWorks 数据管理
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第10天】随着大数据技术的发展,企业对数据处理的需求日益增长。阿里云推出的DataWorks是一款强大的数据集成和管理平台,提供从数据采集、清洗、加工到应用的一站式解决方案。本文通过电商平台案例,详细介绍了DataWorks的核心功能和优势,展示了如何高效处理大规模数据,帮助企业挖掘数据价值。
85 1
|
1月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
90 1
|
1月前
|
数据采集 SQL DataWorks
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第5天】本文通过一家电商平台的案例,详细介绍了阿里云DataWorks在数据处理全流程中的应用。从多源数据采集、清洗加工到分析可视化,DataWorks提供了强大的一站式解决方案,显著提升了数据分析效率和质量。通过具体SQL示例,展示了如何构建高效的数据处理流程,突显了DataWorks相较于传统工具如Excel的优势,为企业决策提供了有力支持。
89 3
|
1月前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
1月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
267 11
|
1月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
91 0
|
1月前
|
开发框架 Java API
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
53 0
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
290 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
368 4