文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot与XXL-JOB高效定时任务管理指南

2024-11-29 19:22

关注

本文将带领你探索如何将这两者集成在一起,实现高效的定时任务管理。无论你是初学者还是有经验的开发者,本文都将提供你所需要的知识,让你轻松掌握这一技术。让我们开始吧!

一、XXL-Job简介

什么是XXL-job

官网地址:https://www.xuxueli.com/xxl-job/

XXL-Job是一个开源的分布式任务调度平台,主要用于解决大规模分布式系统中的任务调度和管理问题。下面是XXL-Job的简介,重点强调其分布式任务调度的特点:

XXL-Job简介:

XXL-Job是一个基于Java开发的分布式任务调度平台,旨在帮助开发者和运维人员管理和调度任务,特别适用于大规模分布式应用。它提供了直观的Web界面,易于配置和监控各种类型的任务。

XXL-Job的关键特点包括:

  1. 分布式任务调度: XXL-Job支持分布式任务调度,可以轻松处理任务分布在不同节点的情况。这对于大型微服务架构和集群环境非常有用。
  2. 弹性扩展: XXL-Job支持弹性扩展,你可以随时增加或减少执行器节点,以适应不同负载和任务需求。这确保了高可用性和性能。
  3. 任务调度中心: XXL-Job提供了一个任务调度中心,可以集中管理和监控任务。你可以在Web界面上创建、编辑、删除任务,查看任务日志和统计信息。
  4. 多种任务类型: 支持多种任务类型,包括简单的定时任务、Bean调用、Shell脚本、HTTP任务、GLUE任务(动态语言任务),满足各种任务需求。
  5. 任务依赖和失败重试: XXL-Job允许你配置任务之间的依赖关系,确保任务按照指定的顺序执行。同时,它支持失败重试机制,确保任务在失败时能够重新执行。
  6. 报警和日志: 提供了报警机制,可以通过邮件、短信等方式通知任务执行结果。任务执行日志也可以在Web界面中查看,便于故障排查和监控。
  7. 开源和社区支持: XXL-Job是开源项目,拥有活跃的社区支持和持续的更新。你可以根据自己的需求进行定制和扩展。

XXL-Job的分布式任务调度特点使其成为处理大规模、复杂任务调度需求的强大工具。它可以帮助开发团队更好地管理任务,提高系统的可靠性和可维护性,同时降低了任务调度的复杂性。

对比别的任务调度

XXL-Job在分布式任务调度领域有其独特之处,下面是它与其他一些任务调度解决方案的比较,以突出其优势和特点:

Quartz:

Spring的@Scheduled:

Elastic Job:

Akka Scheduler:

Cron4J:

总体而言,XXL-Job在分布式任务调度方面的优势在于其易用性、可视化管理、分布式支持、任务依赖和报警机制。它是一个强大的工具,特别适合需要大规模任务调度和监控的应用程序。

然而,具体选择取决于项目需求,一些轻量级的解决方案可能在小型应用中更加合适。

二、springboot整合XXL-job

配置XXL-Job Admin

拉取XXL-Job代码

https://gitee.com/xuxueli0323/xxl-job

https://github.com/xuxueli/xxl-job/

上面的github和gitee都可以选择,然后拉取下来

修改拉取的配置

执行拉取下来的sql:/xxl-job/doc/db/tables_xxl_job.sql

修改调度中心配置/xxl-job/xxl-job-admin/src/main/resources/application.properties

### web,端口,这里我修改了,默认是8080
server.port=9998
# 修改连接数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3361/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456

### xxl-job, access token,注意这里的accessToken在执行器中也需要配置(一致)
xxl.job.accessToken=eyJhbGciOiJIUzI1NiJ9

修改/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml,否则可能会报错


访问http://127.0.0.1:9998/xxl-job-admin,这里端口是你上面配置的,输入默认的账号密码admin/123456

图片

到这里调度中心就配置好了

配置执行器

这里其实刚刚拉取的项目下就涵盖了执行器,包括无框架的以及springboot框架的

图片

自己的项目如何整合

maven依赖


  com.xuxueli
  xxl-job-core
  2.4.0

properties文件配置

### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;这里的ip也是上面调度中心的
xxl.job.admin.addresses=http://127.0.0.1:9998/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;这里的密码是上面调度中心的
xxl.job.accessToken=eyJhbGciOiJIUzI1NiJ9
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-xiaobo
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=./logs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentinotallow=30

执行器组件配置

package com.todoitbo.baseSpringbootDasmart.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@Slf4j
public class XxlJobConfig {

    @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() {
        log.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;
    }
}

jobhandler配置

package com.todoitbo.baseSpringbootDasmart.handler;

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;


@Component
public class JobHandler {

    @XxlJob("demoJobHandler")
    public void demoJobHandler() throws Exception {
        XxlJobHelper.log("XXL-JOB, Hello World.");
    }
}

拉取下来的代码中/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java是更详细的配置

实现效果

启动项目,出现如下即成功。

任务调度页面中加入执行器。

图片

配置任务。

图片

启动任务。

⚠️:这里如果你要执行一次的话,机器地址一定是带http的,比如http://127.0.0.1:9999

如果是启动的话,先点击注册节点,再启动即可

三、@XxlJob中参数详解

以下是这三个参数的详细说明:

这三个参数是@XxlJob注解的基本参数,用于定义任务的基本属性。

四、最佳实践

使用Spring Boot和XXL-Job进行任务调度是一种强大的方式,但也有一些常见的错误和最佳实践,以下是一些建议,帮助读者避免这些错误并在实际项目中取得成功:

详细记录任务日志:记录任务的执行日志是非常重要的,它可以帮助你追踪任务的执行情况,及时发现问题。确保在任务Handler中添加详细的日志信息。

遵循这些最佳实践可以帮助你更好地使用Spring Boot和XXL-Job,确保任务调度系统的可靠性和稳定性。这对于生产环境中的任务调度至关重要。

来源:一安未来内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯