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镜像部署,感兴趣的可以了解一下。还有很多的用法没有探索和介绍,欢迎感兴趣的同学留言发表意见。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值