zoukankan      html  css  js  c++  java
  • 最详细的xxl-job java配置方式spring-boot

    转自:https://blog.csdn.net/weixin_44055234/article/details/106565516

    ————XXL-JOB*是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。且支持线上编写调度任务。
    如何集成?

    去gitee或者github下载源代码 goto xxl-job

    1. 下载或者克隆后用idea 打开项目或直接用idea克隆项目到本地

    在这里插入图片描述

    1. 在项目的doc文件夹下有个db文件夹 ,db文件夹下的sql脚本是xxl-job运行最基本的数据库和表,用sqlyol或Navicat
      运行脚本,或者其他方式执行sql脚本

    在这里插入图片描述

    1. 在xxl-job-admin项目中的application.properties中配置相关属性
      xxl-job-admin是调度器 所以得先启动,如果执行器启动找不到调度器会报连接异常
      在这里插入图片描述

       把刚刚执行sql脚本的数据库连接和密码配置到application.properties中
       其他属性可有所需求在进行配置
      
      • 1
      • 2
    2. 等待idea自动导包完成 然后使用maven工具 先把项目clear 在install 或者xxl-job-admin这个模块需要的模块 和调度模块需要的模块 install
      install 后jar包会存在自己的本地仓库,之后可以直接引入

    在这里插入图片描述

    1. 找到xxl-job的启动类 启动项目,或者直接打包成jar包 运行也可以
      启动成功后浏览器访问 http://127.0.0.1:8080/xxl-job-admin 就可以看到登录页面
      默认账号密码是 admin 123456

    在这里插入图片描述
    登录后
    因为之前有测试过所以有数据
    在这里插入图片描述

    如何使用? 编写执行器
    6. 新建spring boot 工程 在pom文件中导入坐标

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.2.1-SNAPSHOT</version>
        </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这两个坐标是必须的 如果没有spring-boot-starter-web 会无法启动

    1. 编写application.properties中的配置还有logback.xml复制到resources下,这个文件可以自己编写,为了方便我是从xxl-job-admin模块下resources文件中拷贝过来的
      在这里插入图片描述
    2. 编写配置类来读取application.properties的配置
      这里我是直接复制xxl-job-admin的配置类
    import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class XXLJobConfig {
        private Logger logger = LoggerFactory.getLogger(XXLJobConfig.class);
    
        @Value("${xxl.job.admin.addresses}")
        private String adminAddresses;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Value("${xxl.job.executor.appname}")
        private String appname;
    
        @Value("${xxl.job.executor.address}")
        private String address;
    
        @Value("${xxl.job.executor.ip}")
        private String ip;
    
        @Value("${xxl.job.executor.port}")
        private int port;
    
        @Value("${xxl.job.executor.logpath}")
        private String logPath;
    
        @Value("${xxl.job.executor.logretentiondays}")
        private int logRetentionDays;
    
    
        @Bean
        public XxlJobSpringExecutor xxlJobExecutor() {
            logger.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
            xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
            xxlJobSpringExecutor.setAppname(appname);
            xxlJobSpringExecutor.setAddress(address);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
    
            return xxlJobSpringExecutor;
        }
    
        /**
         * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
         *
         *      1、引入依赖:
         *          <dependency>
         *             <groupId>org.springframework.cloud</groupId>
         *             <artifactId>spring-cloud-commons</artifactId>
         *             <version>${version}</version>
         *         </dependency>
         *
         *      2、配置文件,或者容器启动变量
         *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
         *
         *      3、获取IP
         *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
         */
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    1. 编写需要定时执行的代码,也就是调度器执行的执行器
      在需要执行的方法加上@XxlJob 注解 并且取名,之后在调度器中好区分,否者无法调度
      注:Returnt<>(200,"…")中 code 200是成功

    在这里插入图片描述

    1. 配置完毕后启动我们自己创建的工程,在此之前必须启动xxl-job-admin 否者会报错
      在xxl-job-admin的管理页面新增执行器,执行器管理->新增->填写相关信息
      appname是之前在我们自己工程里application.properties配置的
      名称可随便取,只是个区分
      机器地址可手动填写多个,可做高可用
      如果你的执行器是多个的话他会用appName来区分,多个执行器介意手动填写

    在这里插入图片描述

    1. 在任务管理中找到刚刚创建的执行器,选中- 新增
      在这里插入图片描述
      在这里插入图片描述
      任务参数会传递到执行器中
      其他参数见名知意

    详情可查阅官方文档
    在这里插入图片描述

    1. 创建好任务后可在点击操作任务,点启动后执行器就会执行

    在这里插入图片描述

    在这里插入图片描述

    配置任务的时候如果运行模式是GLUE 可以在线编写调度器代码和脚本,支持多语言
    运行后可在运行报表中查看调度情况,也可以查看调度日志

    调度器集群
    一个调度器在执行另外一个不会干涉
    在这里插入图片描述

  • 相关阅读:
    phpStudy for Linux (lnmp+lamp一键安装包)
    eq,neq,gt,lt等表达式缩写
    lnmp环境的使用
    lnmp环境的搭建
    箭头函数中的this
    Vue中实现路由懒加载及组件懒加载
    Vue项目中实现路由按需加载(路由懒加载)的3中方式:
    判断数据类型的方式以及各自的优缺点
    最近工作中踩的坑
    7种方法实现CSS左侧固定,右侧自适应布局
  • 原文地址:https://www.cnblogs.com/sharpest/p/13709798.html
Copyright © 2011-2022 走看看