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异常退出条件的判断示例代码

    这篇文章主要介绍了Java异常退出条件的判断示例代码,涉及常见异常退出条件等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • spring mvc路径匹配原则详解

    spring mvc路径匹配原则详解

    这篇文章主要介绍了spring mvc路径匹配原则详解,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以参考下,下面就和小编一起来看看吧
    2018-02-02
  • java 使用Graphics2D在图片上写字

    java 使用Graphics2D在图片上写字

    这篇文章主要介绍了java 使用Graphics2D在图片上写字,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringCloud如何使用Eureka实现服务之间的传递数据

    SpringCloud如何使用Eureka实现服务之间的传递数据

    这篇文章主要介绍了SpringCloud使用Eureka实现服务之间的传递数据操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 使用Java实现MapReduce词频统计示例代码

    使用Java实现MapReduce词频统计示例代码

    这篇文章主要介绍了使用Java实现MapReduce词频统计的相关资料,通过词频统计示例来展示MapReduce的运行机制,涵盖了Mapper和Reducer的实现,并说明了如何配置和执行MapReduce作业,需要的朋友可以参考下
    2024-11-11
  • Spring中Bean的作用域与生命周期详解

    Spring中Bean的作用域与生命周期详解

    这篇文章主要给大家介绍了Spring中Bean的生命周期和作用域及实现方式的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧
    2021-08-08
  • SpringBoot SpringSecurity JWT实现系统安全策略详解

    SpringBoot SpringSecurity JWT实现系统安全策略详解

    Spring Security是Spring的一个核心项目,它是一个功能强大且高度可定制的认证和访问控制框架。它提供了认证和授权功能以及抵御常见的攻击,它已经成为保护基于spring的应用程序的事实标准
    2022-11-11
  • Java 数据库连接池DBPool 介绍

    Java 数据库连接池DBPool 介绍

    这篇文章主要给大家分享了Java 数据库连接池DBPool 介绍,<BR>DBPool是一个高效的易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池使你能够开发一个满足自已需求的数据库连接池,下面一起来看看文章内容的详细介绍吧,需要的朋友可以参考一下
    2021-11-11
  • 深入理解Java设计模式之中介者模式

    深入理解Java设计模式之中介者模式

    这篇文章主要介绍了JAVA设计模式之中介者模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
    2021-11-11
  • java 分割csv数据的实例详解

    java 分割csv数据的实例详解

    这篇文章主要介绍了java 分割csv数据的实例详解的相关资料,这里提供了简单实例,需要的朋友可以参考下
    2017-07-07

最新评论