zoukankan      html  css  js  c++  java
  • xxl-job项目搭建

    1、源码地址

    https://github.com/xuxueli/xxl-job
    http://gitee.com/xuxueli0323/xxl-job

    2、官方文档地址(源码中也有官方文档):https://www.xuxueli.com/xxl-job/#《分布式任务调度平台XXL-JOB》

    3、初始化调度数据库(源码文件中);调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例

    /xxl-job/doc/db/tables_xxl_job.sql

    4、编译源码,整体编译即可

    5、配置部署“调度中心”

    调度中心项目:xxl-job-admin
    作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
    /xxl-job/xxl-job-admin/src/main/resources/application.properties
    基本配置:配置数据库连接必配;邮箱连接选配;其他配置使用默认即可,后续可根据需要修改配置

    6、执行器配置

    6.1 使用或复制源码中xxl-job-executor-samples中的xxl-job-executor-sample-springboot项目,
      修改server.port、 xxl.job.admin.addresses、 xxl.job.executor.port即可实现快速搭建

    6.2 创建新的springbooot项目
    6.2.1 引入依赖:
    <dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>版本号与调度器版本号保持一致</version>
    </dependency>
    6.2.2 在application.properties文件中添加配置信息(将示例项目xxl-job-executor-sample-springboot中的配置复制过来即可)

    #项目端口号
    server.port=8081
    #日志配置
    logging.config=classpath:logback.xml
    #调度器地址配置
    xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
    #令牌,需和调度器的令牌配置保持一致
    xxl.job.accessToken=
    #执行器名字
    xxl.job.executor.appname=xxl-job-executor-sample
    #执行器地址,可不配置
    xxl.job.executor.address=
    #执行器ip
    xxl.job.executor.ip=
    #执行器端口号,如果不配置,随机取
    xxl.job.executor.port=9999
    #日志地址
    xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
    #日志保留时间,如果小于3,认为不会定期清理日志
    xxl.job.executor.logretentiondays=30

    6.2.3 logback.xml日志配置(非必须,但是如果application.properties中进行了路径配置,此处就需要配置;此处是springboot内置日志打印配置,与xxl-job无关)
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>
    <property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
    <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
    </rollingPolicy>
    <encoder>
    <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
    </pattern>
    </encoder>
    </appender>

    <root level="info">
    <appender-ref ref="console"/>
    <appender-ref ref="file"/>
    </root>

    </configuration>

    6.2.4 创建配置类
    @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;
    }
    }

    6.2.4 创建任务执行类
    @Component
    public class SampleXxlJob {
    private static final Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);


    /**
    * 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
    }


    /**
    * 2、分片广播任务
    */
    @XxlJob("shardingJobHandler")
    public void shardingJobHandler() throws Exception {

    // 分片参数
    int shardIndex = XxlJobHelper.getShardIndex();
    int shardTotal = XxlJobHelper.getShardTotal();

    XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);

    // 业务逻辑
    for (int i = 0; i < shardTotal; i++) {
    if (i == shardIndex) {
    XxlJobHelper.log("第 {} 片, 命中分片开始处理", i);
    } else {
    XxlJobHelper.log("第 {} 片, 忽略", i);
    }
    }

    }
    }
  • 相关阅读:
    四则运算
    androidstdio导入工程报错
    日程代码任务1
    软件团队模式选择
    初识软件工程
    java数组中最大的子数组之和
    解决键盘布局错误(日文系统)
    固态硬盘的更替
    ZendDebugger的配置
    apache命令行启动
  • 原文地址:https://www.cnblogs.com/hanwenbo/p/14321895.html
Copyright © 2011-2022 走看看