首页 > 编程语言 >Java项目集成xxl-job(自动任务)

Java项目集成xxl-job(自动任务)

时间:2024-10-18 16:22:06浏览次数:3  
标签:执行器 Java spring 调度 job mail xxl

官网|代码

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

    首先:文档很详细,非常清晰,集成到项目中也非常简单

    • 进入官网后下拉就是文档
    • 按文档一步步一般没有问题,主要说下可能会疑惑的点
    • 直接点击 1.5在gitee下载代码 : http://gitee.com/xuxueli0323/xxl-job
  2. 代码结构如下:

    image-20241018100858986

  3. 以上我们只需要关注我选的这三个(主流现在就是springboot这种,springcloud不也是吗,以默认为主,自定义东西后续想改自己去改)

tables_xxl_job.sql

拿去数据库执行一下,会生成需要的数据库和表

xxl-job-admin 调度中心

image-20241018101958493

启动调度中心(与我们的项目代码分离,低耦合 ) ,如端口是8080

server.port=8080
server.servlet.context-path=/xxl-job-admin

访问地址 http://localhost:8080/xxl-job-admin/
初始密码 admin 123456

至此。我们已经成功访问到调度中心,先别着急,继续看

  • xxl-job-core xxl-job的核心依赖,不需要关注,我们以Maven依赖拿到了

xxl-job-executor-sample-springboot 执行器

这是给我们需要的示例代码

image-20241018112449202

  • XxlJobConfig 配置类默认就是好的

  • SampleXxlJob 示例方法,一般都是bean模式

        /**
         * 1、简单任务示例(Bean模式)
         */
        @XxlJob("demoJobHandler")
        public void demoJobHandler() throws Exception {
            XxlJobHelper.log("XXL-JOB, Hello World.");
    
            for (int i = 0; i < 5; i++) {
                XxlJobHelper.log("beat at:" + i);
                TimeUnit.SECONDS.sleep(2);
            }
            // default success
        }
    
  • XxlJobExecutorApplication 启动类

  • 一样的不说了,主要还是application.properties配置文件

    server.port=8081
    xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
    xxl.job.executor.appname=xxl-job-executor-sample
    //端口
    //addresses就是刚才启动的调度中心地址
    //appname先默认,后续说
    //主要是这几个,其他会默认分配
    
  • 启动执行器:XxlJobExecutorApplication.java

调度过程

  1. ​ 页面

    image-20241018110819549

    • 运行报表:展示页面,略过,自己看看

    • 执行器管理: 不是集成项目就只需一个执行器,这里的AppName必须和我们前面在执行器中定义的一样,名称自定义就行,我们改完就可以在任务管理选择执行器(因为非集成项目默认一个就可)

    • 任务管理: 我们定义的自动任务

      新增:注意JobHandler,

      操作:里面执行一次测试一下ok不,其他自己点点看

      报警邮件又想试试吧

      比如QQ邮箱,username和from写自己都写自己QQ,password写你QQ的授权码(登录QQ邮箱网页设置|账号与安全-安全设置-生成授权码),如下在调度中心设置一下就行

      ### xxl-job, email
      spring.mail.host=smtp.qq.com
      spring.mail.port=25
      spring.mail.username=你的QQ号@qq.com
      spring.mail.from=你的QQ号@qq.com
      spring.mail.password=你的QQ授权码
      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
      

      image-20241018115054131

    • 调度日志: 任务执行之后的执行结果(成功|失败等),看具体执行日志等

      xxl.job.executor.appname=xxl-job-executor-sample //自定义

整合到自己的项目

  1. 首先看完以上你应该有意识到上述代码中只有xxl-job-admin才是调度中心,xxl-job-core只是核心依赖,xxl-job-executor-sample执行器下两个模块也只是示例代码,

  2. 实际项目整合的时候整合是xxl-job的执行器(也就是示例代码中的),我们把前面示例代码xxl-job-executor-sample-springboot模块(执行器)整合到项目中

  3. 在对应的pom.xml加上xxl-job的依赖

            <!-- xxl-job-core -->
            <dependency>
                <groupId>com.xuxueli</groupId>
                <artifactId>xxl-job-core</artifactId>
                <version>2.3.1</version>
            </dependency>
    

    这其中我只遇到了这一个问题:实际项目和调度中心没有连上

    调度中心和我们项目中的xxl-job-core版本要一致才对

    因为我们拉下来的代码版本都是snapshot快照版本的例如<version>2.4.2-SNAPSHOT</version>

    这就可能会有问题

    所以可以如上换成一个稳定版本如2.3.1,

    这里改了后需要去调度中心将它的版本也改为2.3.1

  4. 将它下面的配置类XxlJobConfig.java放到我们配置包里面(这个不要费脑筋我要放到那个模块下那个位置啊,都行,这不一般都有个config包习惯放着,或者你实际建的包)

  5. 在你的配置类中加上,注意addresses是你调度中心地址,appname定义后,在调度中心-执行器管理-那个appname要和这个一样,其他不需改,空的都是默认的(等你后面看几次就知道了,自动搞好的,没影响),日志位置想改自己改吧

    那个不是properties吗,实际项目不都是yml,你要真是properties,那在示例properties对应直接复制过去就行了

    xxl:
      job:
        admin:
          addresses: http://127.0.0.1:8080/xxl-job-admin
        accessToken: default_token
        executor:
          appname: xxl-job-executor
          address:
          ip:
          port: 9999
          logpath: /data/applogs/xxl-job/jobhandler
          logretentiondays: 30
    
  6. 好了已经整合好了,写实际业务代码吧,它的示例代码SampleXxlJob.java一样的东西,你自己建个业务类,有多少个自动任务就建多少 @XxlJob(“xxx”)方法,如下:

    @Component
    public class YorName {
        private static Logger logger = LoggerFactory.getLogger(YorName.class);
    
        @XxlJob("demoJobHandler")
        public void demoJobHandler() throws Exception {
            XxlJobHelper.log("XXL-JOB, Hello World.");
    
            for (int i = 0; i < 5; i++) {
                XxlJobHelper.log("beat at:" + i);
                TimeUnit.SECONDS.sleep(2);
            }
            // default success
        }
        @XxlJob("test001")
        public void test001() throws Exception {
            //你的自动任务test001具体业务代码
            logger.info("XXL-JOB, Hello World");
        }
        
        @XxlJob("hhh")
        public void test002() throws Exception {
            /*
             * @XxlJob("hhh")和方法名test002没有关系,只是习惯一般一样,
             * @XxlJob("hhh")这个和你任务管理-JobHandler一致
             * 你的自动任务test001
             * @date: 2024/10/18 14:13
             */
            logger.info("XXL-JOB, Hello World123");
        }
    
    }
    
    1. 至此,你已经成功在你的项目中集成xxl-job了,启动你的项目试一下吧

    2. 有其他需求看文档就行了,xxl-job官方文档写的看着是真舒服啊

    3. 如果有其他问题,可以留言互相学习

标签:执行器,Java,spring,调度,job,mail,xxl
From: https://blog.csdn.net/THB66666/article/details/143053852

相关文章

  • BigDecimalUtil工具类 Java 多种类型(Double, String, Integer)转换成BigDecimal 进行加
    工具说明没有什么太复杂的代码。先是通过方法名称确定返回值的类型(BigDecimal、Double、String)。然后大量的重载方法,用“穷举法”把BigDecimal、Double、String、Integer四种类型进行各种形式的两两组合,进行加减乘除运算。运算时非BigDecimal类型的参数会转化成BigDecim......
  • 最新毕设-SpringBoot-校园学习交流和资源共享平台-78210(免费领项目)可做计算机毕业设计
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1 数据流程2.2.2 用户登录流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3 系统......
  • java----IO流
    IO流概述IO流:存储和读取数据的解决方案I:inputO:ourput流:像水流一样传输数据IO流作用?用于读写数据(本地文件,网络)IO流按照流向可以分类为哪两种流?输出流:程序->文件 输入流:文件->程序IO流按照操作文件的类型可以分类哪两种流?字节流:可以操作所有类型的文件......
  • 挑战1000道javascript手写题之实现Promise.all(9)
    Promise.all介绍Promise.all方法接收一个数组作为参数,这个参数数组的元素也都是promise实例,该方法返回一个promise示例。constp=Promise.all([p1,p2,p3]);p的状态由p1、p2、p3决定,p最后的状态要么是变成fulfilled,要么变成rejected。变成fulfilled:只有当p1、p2、p3......
  • [Javascript] Write Promise.all()
    Promise.myAll=function(promises){letres,rej;constp=newPromise((resolve,reject)=>{res=resolve;rej=reject;});leti=0;letresult=[];//sincePromise.allcantakeanyiterableasinput//tocheckwhether......
  • javascript渲染OFD的库
    目前使用javascript开发的OFD的渲染库主要有两个:ofd.js和liteofd,其中ofd.js开发比较早,liteofd是最近刚出现的js库。首先结论是ofd.js渲染效果没有liteofd好,因为ofd.js目前有一些效果没有支持,比如对字体没有比较好的解析和支持。liteofd相对ofd.js效果更好,并且提供的接口方法更多......
  • [Javascript] Write .call()
    Function.apply.myCall=function(ctx,...args){ctx=ctx===null||ctx===undefined?globalThis:Object(ctx);constfn=this;constkey=Sybmol("fn");//wedon'twantusercansee[Sybmol("key")]inFunctionpro......
  • Java中的Collections类和泛型
    在Java的集合框架中,`Collections`类扮演着一个非常重要的角色。它提供了一系列对集合进行操作的静态方法,这些方法可以用于各种集合类型,如`List`、`Set`和`Map`等,从而方便我们对集合进行诸如排序、查找、反转等操作。##一、排序操作1.**`sort`方法**  -`Collections`类......
  • Java爬虫:获取商品评论数据的高效工具
    在电子商务的激烈竞争中,商品评论作为消费者购买决策的重要参考,对于商家来说具有极高的价值。它不仅能够帮助商家了解消费者的需求和反馈,还能作为改进产品和服务的依据。Java爬虫技术,以其稳健性和高效性,成为了获取商品评论数据的理想选择。本文将介绍如何使用Java爬虫API获取商......
  • java计算机毕业设计“阴阳师”游戏玩家社区设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,游戏产业迎来了蓬勃发展的黄金时期,其中移动游戏更是占据了重要的市场份额。《阴阳师》作为一款极具人气的手机游戏,吸引......