SpringBoot集成Xxl-job

前言

  1. 在开发过程中,会遇到需求要求定时定点的产生一些报表数据或者操作,把这一类行为统称为定时任务,实现定时任务的方式有spring注解(@Scheduled)、quartz框架以及今天要介绍的Xxl-job。

一. 什么是Xxl-job?

官网介绍:XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接入多家公司线上产品线,开箱即用。

官方文档:文档
项目地址:传送门

二.Xxl-job简单使用

  1. 下载源码,更改配置文件信息,仅需要修改数据库配置即可。
  2. 启动项目后访问:http://localhost:8080/xxl-job-admin/toLogin,用户名:admin,密码:123456。登录成功后的项目首页: ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=!%5Bhttps%3A%2F%2Fimg-home.csdnimg.cn%2Fimages%2F20220524100510.png%5D(https%3A%2F%2Fimg-blog.csdnimg.cn%2Fdirect%2F857fb0fa28b44cf1b4c6641d4312d85c.png&pos_id=img-QV4qOjYz0220524100510.pnpic_center
    2.新建测试项目
    引入Xxl-job核心依赖
   <dependency>
           <groupId>com.xuxueli</groupId>
           <artifactId>xxl-job-core</artifactId>
           <version>2.3.1</version>
       </dependency>

配置文件


server.port=8002
#日志配置文件
logging.config=classpath:logback.xml
# xxl-job任务配置中心地址,支持集群模式,多个地址用逗号隔开
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

# 调度中心通讯TOKEN,这里使用默认即可
xxl.job.accessToken=default_token

xxl.job.executor.appname=xxl-job-executor-sample
# 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
# 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册""调度中心请求并触发任务";
xxl.job.executor.ip=192.168.1.10
# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9998
# 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则,-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30

新建测试方法。在方法上面加入注解(@XxlJob( “fristJob”))

    @XxlJob( "fristJob")
    public String sendMsg(){
        logger.info("我是服务:{},正在执行发送短信方法",appName);
        logger.info(XxlJobHelper.getJobParam());
        return "短信发送成功";
    }
      @XxlJob("sencodJob")
    public String sendEmail() throws InterruptedException {
        logger.info("我是服务:{},正在执行发送邮件方法",appName);
        TimeUnit.SECONDS.sleep(5);
        return "邮件发送成功";

    }

配置任务
在这里插入图片描述
执行器:默认就行
描述:随便填
负责人:写自己
报警邮箱:需要进行邮箱配置,这里使用qq邮箱测试,当任务执行报错失败时会有邮件通知

spring.mail.host=smtp.qq.com#邮箱服务器
spring.mail.port=465#端口
spring.mail.username=邮箱
spring.mail.from=邮箱
spring.mail.password=授权密码,不是邮箱登录密码,不知道的查一下教程
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

在这里插入图片描述
调度类型:支持cron表达式和固定频率执行(频率默认s)
运行模式:支持java代码、cmd命令、shelle脚本等,本次使用BEAN。
JobHandler:任务执行器名称
任务参数:字符串,方法中使用XxlJobHelper.getJobParam()获取参数内容。
路由策略:支持轮训、顺序第一个或者最后一个、还支持HASH等等规则。这里测试一下轮询。修改当前项目的启动参数,模拟集群环境。
在这里插入图片描述
将路由策略改为轮询
在这里插入图片描述
在这里插入图片描述
子任务id:这里指的是任务列表上的id。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
任务超时时间:默认单位s,当执行任务超过设定时间会失败,并且会根据重试次数进行重新调用。利用日志查看结果
在这里插入图片描述
重试次数改为2,点击执行一次。在方法中设定超时。发现日志有三条数据。
在这里插入图片描述

总结

  1. 与quartz相比,xxl-job支持多种开发语言,提供了可视化管理界面,由于xxl-job有服务端和客户端之分,使用起来在一定程度上使得代码的耦合性没那么高,对代码侵害低。是一个非常不错的任务调度框架,关键还是开源的。
  2. 本次对xxl-job进行简单的使用和了解,xxl-job还提供了docker镜像部署,感兴趣的可以了解一下。还有很多的用法没有探索和介绍,欢迎感兴趣的同学留言发表意见。
资源下载链接为: https://pan.quark.cn/s/9ce3e35e0f39 在当今的微服务架构中,定时任务是不可或缺的,它广泛应用于数据同步、报表生成、缓存更新等场景。xxl-job是一款功能强大的分布式任务调度平台,具备易用的可视化界面、高效稳定的分布式调度能力以及丰富的调度策略。与SpringBoot集成,使得定时任务的管理和执行变得更加高效便捷。本文将详细介绍如何将xxl-jobSpringBoot进行集成,实现高效的定时任务管理。 xxl-job包含两个核心组件: 调度中心(xxl-job-admin):负责任务的注册、管理和调度。 执行器(xxl-job-executor):负责任务的实际执行,可以部署在多个节点上,实现分布式运行。 添加依赖:在SpringBoot项目中,通过pom.xml文件引入xxl-job-admin和xxl-job-executor的依赖,确保版本匹配。 配置调度中心:在xxl-job-admin中配置数据库连接信息,创建表结构,并在application.properties中设置调度中心的访问地址。 配置执行器:在xxl-job-executor-sample-springboot模块中,配置执行器的属性,如ID、名称、IP等,并指定调度中心的地址。 编写Job Handler:在xxl-job-executor-sample-springboot中创建一个实现com.xxl.job.core.handler.IJobHandler接口的类,定义任务逻辑,并通过@Component注解进行自动扫描。 注册Job Handler:在启动类中,通过@Autowired注入XxlJobAdminConfig,并调用registerJobHandler方法将Job Handler注册到执行器中。 创建任务:在xxl-job-
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值