SpringBoot集成xxl-job实现超牛的定时任务的步骤详解

 更新时间:2023年10月27日 08:47:08   作者:掉头发的王富贵  
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,现已开放源代码并接入多家公司线上产品线,开箱即用,本文给大家介绍了SpringBoot集成xxl-job实现超牛的定时任务,需要的朋友可以参考下

开始介绍xxl-job的使用前我们先认识一下它的作者:Xuxueli(许雪里 )

Xuxueli(许雪里 )是中国知名的开源社区贡献者和技术专家。他是XXL-Job的创始人和核心开发者,也是XXL-Job的主要维护者。他在分布式任务调度领域有着丰富的经验和深厚的技术功底。可以看到xxl-job是一个优秀的国产货!

其实市面上有很多类似的产品:

产品名称国产/国外开源/商业主要特点
XXL-Job国产开源简单易用、分布式支持、可视化监控、扩展性强、活跃的社区支持
Quartz国外开源灵活的调度配置、支持集群部署、可靠的任务调度、广泛应用
Airflow国外开源基于DAG的任务调度、可视化工作流编排、丰富的调度功能、社区活跃
Azkaban国外开源分布式任务调度、可视化工作流编排、易于使用、支持多种调度方式
TAC国产商业分布式任务调度、高可靠性、高性能、可视化监控、企业级支持
Elastic Job国产开源分布式任务调度、弹性扩展、高可靠性、支持多种任务类型、与Elasticsearch、Zookeeper等集成

包括之前博主讲的 Elastic Job

废话不多说,现在我们来开始把xxl-job集成到SpringBoot(SpringCloud)中。

第一步,下载官方的仓库

没错,你没看错,是把他的仓库克隆下来,和其他的框架不同(在项目中引入jar包即可)

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

gitee地址:https://gitee.com/xuxueli0323/xxl-job/tree/master

之后用idea打开是这样的

第二步,连接mysql

xxl-job存储的介质是mysql,所以我们需要执行一下sql文件来创建一个库。找到官方的sql文件

/xxl-job/doc/db/tables_xxl_job.sql

在我们本地的mysql直接执行,执行之后会得到一个名字叫xxl-job的库

这里一共八个表,他们的作用是:

  • xxl_job_user表:该表用于存储用户信息,包括用户的登录名、密码、角色等。用于用户的身份认证和权限管理。

  • xxl_job_logglue表:该表用于存储任务的日志关联信息,包括任务的执行日志ID、任务的日志时间等。用于关联任务的执行日志和日志文件。

  • xxl_job_group表:该表用于存储任务分组信息,包括分组的名称、排序等。用于对任务进行分组管理,方便任务的分类和查找。

  • xxl_job_info表:该表用于存储任务的基本信息,包括任务名称、任务分组、任务描述、任务执行类、任务参数等。每个任务在该表中都有一条记录。

  • xxl_job_log表:该表用于存储任务的执行日志,包括任务的执行结果、执行时间、执行耗时、执行日志等。每次任务执行完成后,会在该表中插入一条记录。

  • xxl_job_log_report表:该表用于存储任务的执行报表,包括任务的执行统计信息,如成功次数、失败次数、触发次数、调度时间等。每次任务执行完成后,会在该表中插入或更新一条记录。

  • xxl_job_registry表:该表用于存储任务执行器的注册信息,包括执行器的地址、端口、心跳时间等。每个执行器在该表中都有一条记录,用于任务的分配和调度。

  • xxl_job_lock表:该表用于存储任务的分布式锁信息,用于控制任务在分布式环境下的并发执行。每个任务在该表中都有一条记录,用于任务的加锁和解锁。

第三步,连接本地的mysql库

配置文件的地址是

/xxl-job/xxl-job-admin/src/main/resources/application.properties

这里面我们直接填写本地的数据库信息。

第四步,启动xxl-job-admin项目

配置好本地的mysql环境之后,选择好项目的jdk

之后我们启动启动类

com.xxl.job.admin.XxlJobAdminApplication

控制台打印如下信息则说明我们启动完成了

访问xxl-job的控制台

http://localhost:8080/xxl-job-admin/toLogin 默认的用户密码是 admin、123456

第五步,启动执行器项目

执行器(Executor)是指用于执行具体任务的运行时组件。执行器负责接收任务调度中心分配的任务,并按照任务的配置进行执行。可以理解为xxl-job-admin项目是一个注册中心,而执行器项目就是我们的执行者,注册中心负责管理统筹我们具体的任务,而任务里面具体做了什么事情就是执行器项目里面的业务了。

直接使用官方的项目即可

官方的仓库里面也给了我们一个执行器示例项目,叫做xxl-job-executor-sample-springboot

我们也执行启动类即可,如下则启动成功

这个时候我们去访问我们的控制台页面即可看到我们的执行器项目已经成功注册进来了

更改注册中心(xxl-job-admin项目)地址

我们可以看到这里的配置文件可以直接更改注册中心的地址

xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

第六步,执行定时任务

通过在任务执行类的方法上添加@XxlJob注解,可以将该方法标记为一个定时任务。注解中可以设置任务的名称、分组、CRON表达式等属性,以及任务的参数和路由策略等。

使用项目中的示例任务

com.xxl.job.executor.service.jobhandler.SampleXxlJob#demoJobHandler

使用控制台调用任务

之后可以看到代码里面对应的信息被打印到日志中(示例任务是这样的,实际根据你的业务写代码就可以了)

第七步,自定义xxl-job服务

xxl-job-admin(注册中心)

在实际的工作过程中,必不能直接这样使用,就拿我们公司来说,我们使用的是微服务的架构,我们会把xxl-job-admin项目封装成一个微服务(当然不注册到nacos中)。这里直接用Maven打包成一个jar包

会在和项目同级别的目录下出现一个jar包

即可通过java命令运行

xxl-job-executor(执行器)

之后我们使用具体服务的微服务里面的节点(业务包,例如用户中心)指定xxl-job-admin项目的地址里面去使用。如果使用自定义的执行器要保证引入以下jar包

		 <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

就如示例项目中一样

直接运行执行器即可注入到xxl-job-admin(注册中心)里面去,最后我们在控制台统一管理我们的任务即可:

通过本文的介绍,我们了解了如何在Spring Boot项目中集成XXL-Job,实现超牛的定时任务。XXL-Job提供了强大的任务调度和管理功能,使得定时任务的开发和管理变得更加简单和高效。

集成XXL-Job,我们可以通过配置或注解的方式定义定时任务,并灵活地设置任务的调度规则和执行方式。无论是按照时间间隔还是时间点执行任务,XXL-Job都能满足我们的需求。同时,XXL-Job还提供了任务的监控和管理功能,让我们可以实时了解任务的执行情况和结果。

通过使用XXL-Job,我们可以轻松实现定时任务的自动化执行,提高系统的稳定性和可靠性。无论是在企业级应用中还是个人项目中,XXL-Job都能为我们带来便利和效益。

XXL-Job作为一款国产的优秀开源软件,提供了强大的任务调度和管理功能,完全能够媲美甚至超越国外同类产品。作为国产软件的使用者和推广者,我们应该积极拥抱国产软件,为其发展壮大贡献自己的力量。让我们携手努力,为国内软件行业的发展做出更大的贡献!

以上就是SpringBoot集成xxl-job实现超牛的定时任务的步骤详解的详细内容,更多关于SpringBoot xxl-job定时任务的资料请关注脚本之家其它相关文章!

相关文章

  • Java实现快速幂算法详解

    Java实现快速幂算法详解

    快速幂是用来解决求幂运算的高效方式。此算法偶尔会出现在笔试以及面试中,特意花时间研究了下这题,感兴趣的小伙伴快跟随小编一起学习一下
    2022-10-10
  • java 如何实现多语言配置i18n

    java 如何实现多语言配置i18n

    这篇文章主要介绍了java 如何实现多语言配置i18n的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringCloudGateway 网关登录校验实现思路

    SpringCloudGateway 网关登录校验实现思路

    文章介绍了在微服务架构中使用Spring Cloud Gateway进行登录校验的方法,通过在网关层面进行登录校验,并将用户信息通过请求头传递给下游微服务,解决了每个微服务都需要独立进行登录校验的问题,此外,还讨论了如何在微服务之间传递用户信息
    2024-11-11
  • java导出json格式文件的示例代码

    java导出json格式文件的示例代码

    本篇文章主要介绍了java导出json格式文件的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java服务端架构之微服务与单体服务的权衡方式

    Java服务端架构之微服务与单体服务的权衡方式

    本文比较了Java微服务与单体服务的优缺点,并提供了相应的示例代码,微服务架构具有可扩展性、技术多样性等优势,但复杂性和网络延迟是缺点,单体服务架构简单易部署,但扩展性差,选择哪种架构应根据项目需求和团队能力
    2025-03-03
  • 在java程序中使用protobuf

    在java程序中使用protobuf

    这篇文章主要介绍了protobuf的基本使用和同java结合的具体案例,感性兴趣的小伙伴可以一起来阅读下文
    2021-08-08
  • intellij idea中spring boot properties文件不能自动提示问题解决

    intellij idea中spring boot properties文件不能自动提示问题解决

    这篇文章主要介绍了intellij idea中spring boot properties文件不能自动提示问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • java中计算集合的交差并集示例代码

    java中计算集合的交差并集示例代码

    今天突然想Java如何计算集合的交差并集,主要是看Python语言的时候想起来的。下面这篇文章主要给大家介绍了关于java中计算集合的交差并集的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • SpringBoot 基于 MongoTemplate 的工具类过程详解

    SpringBoot 基于 MongoTemplate 的工具类过程详解

    MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种,这篇文章主要介绍了SpringBoot基于MongoTemplate的工具类,需要的朋友可以参考下
    2023-09-09
  • Spring cloud如何实现FeignClient指定Zone调用

    Spring cloud如何实现FeignClient指定Zone调用

    这篇文章主要介绍了Spring cloud如何实现FeignClient指定Zone调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论