• xxl-job安装与使用


    介绍

    1. 问题
      分布式系统,每个项目上都有多个定时任务,到点的时候每个主机都运行一遍就出现了问题
    2. xxl-job
      xxl-job是分布式任务调度平台,轻量级,学习简单,并且是开源,很多大公司都是使用 官网

    调度中心

    1. 源码下载gitee
    2. 将整个项目克隆下来,在xxl-jobdocdb下有一个sql语句,在本地数据库运行
    3. 修改xxl-job-admin数据库连接地址,账号,密码
    4. 直接启动,访问http://127.0.0.1:8080/xxl-job-admin/账号admin 密码123456

    执行器

    1. 创建一个springboot项目,引入xxl-core
      <dependency>
      	<groupId>com.xuxueli</groupId>
          <artifactId>xxl-job-core</artifactId>
          <version>2.3.0</version>
      </dependency>
      
    2. 配置执行器
      1. 配置文件

        # 调度中心地址
        xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
        # app名称
        xxl.job.executor.appname=xxl-job-executor-sample1
        
      2. 配置xxljob执行器

        package cn.jaminye.xxljobdemo.config;
        
        import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
        import org.springframework.beans.factory.annotation.Value;
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.Configuration;
        
        /**
         * @author Jamin
         * @date 2021/6/23 17:22
         */
        @Configuration
        public class XxlJobConfig {
        
            @Value("${xxl.job.admin.addresses}")
            private String adminAdresses;
        
            @Value("${xxl.job.executor.appname}")
            private String appname;
        
            @Bean
            public XxlJobSpringExecutor xxlJobSpringExecutor() {
                XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
                xxlJobSpringExecutor.setAdminAddresses(adminAdresses);
                xxlJobSpringExecutor.setAppname(appname);
                return xxlJobSpringExecutor;
            }
        
        }
        
      3. 修改启动类

        package cn.jaminye.xxljobdemo;
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        
        import java.util.concurrent.CountDownLatch;
        
        @SpringBootApplication
        public class XxlJobDemoApplication {
            public static void main(String[] args) throws InterruptedException {
                SpringApplication.run(XxlJobDemoApplication.class, args);
                //让程序不结束
                new CountDownLatch(1).await();
            }
         }     
        
      4. 执行器配置

        1. 打开调度中心
        2. 选择执行器管理
        3. 添加,AppName输入执行器配配置的AppName
        4. 启动执行,可以从控制台看到注册成功,以及调度中心online机器地址(没有配置主机ip会自动获取,ip默认为9999)
      5. 创建任务

        1. 这里创建一个简单的执行器
          package cn.jaminye.xxljobdemo.service;
           
          import com.xxl.job.core.handler.annotation.XxlJob;
          import org.springframework.stereotype.Component;
           
          /**
           * @author Jamin
           * @date 2021/6/23 17:26
           */
          @Component
          public class SampleXxlJob {
           
              @XxlJob("demoJobHandler")
              public void demoJobHandler() throws InterruptedException {
                  Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
          	    //控制台日志
          	    logger.info("123");
          	    // 执行日志
                  XxlJobHelper.log("123");
          	    Thread.sleep(2000);
          	}
          }
          
        2. 任务配置
          主要配置cron表达式(这里测试使用1秒钟1次)与JobHandler(XxlJob注解中的值)

          点击调度日志,可查看执行结果,调度时间与执行时间,可以看到它是实时调度,但执行等上一个执行完成才执行

          查看控制台可以看到代码中控制台打印的日志,在执行日志中可以看到xxl打印的日志
    作者: JaminYe
    版权声明:本文原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  • 相关阅读:
    大型网站技术架构读书笔记目录
    读书笔记1: 大型网站架构演化
    关于HTML5中的canvas标签的个个人理解
    javascript的部分功能实现
    简易计算机的做法
    关于C语言的学习和理解
    体验LESS CSS 框架
    在学习ps中的问题和理解。
    关于做登录页面
    css实现动画功能
  • 原文地址:https://www.cnblogs.com/JaminYe/p/15548508.html
Copyright © 2020-2023  润新知