任务调度xxljob的使用记录

发布于:2024-04-29 ⋅ 阅读:(26) ⋅ 点赞:(0)

1.基本使用

a.下载代码,地址:https://gitee.com/xuxueli0323/xxl-job.git
在这里插入图片描述
b.执行sql,修改配置,启动任务调度中心的代码
在这里插入图片描述
在这里插入图片描述
启动代码后任务调度中心访问地址:http://localhost:8080/xxl-job-admin(自己机器的ip)
默认账号密码:admin/123456
在这里插入图片描述
c.编写执行器注册到任务调度中心(参考上述示例)
相关配置

# 指定要连接的任务调度中心地址
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

# 连接任务调度中心的token
xxl.job.accessToken=default_token

# 指定当前应用的名称
xxl.job.executor.appname=zwb-test

#  这个是ip和port的组合
#xxl.job.executor.address=

### 指定到任务中心的ip
xxl.job.executor.ip=127.0.0.1

# 指定通信的端口
xxl.job.executor.port=9999

# 指定任务执行的日志
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler

# 日志保存时间
xxl.job.executor.logretentiondays=30

编写一个配置类

package com.example.demo.xxljob.config;

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;

// 将上述在配置文件中配置信息读取,注册一个XxlJobSpringExecutor对象
@Configuration
public class JobConfig {

    @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() {
        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();
     */


}

注册一个定时任务

@Component
public class JobExample {
    @XxlJob("execute1")
    public void execute1() {
        System.out.println("用来测试xxl-job是否连通");
    }

}

d.启动该代码后去任务调度中心配置相关数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
e.启动相关定时任务
在这里插入图片描述
在这里插入图片描述

2.基于集群的使用

a.搭建集群:基于上述的使用,赋值一份执行器代码,只需要更改xxl-job的通信端口即可完成集群的部署
在这里插入图片描述
在这里插入图片描述

b.集群配置
在这里插入图片描述
在这里插入图片描述

3.路由策略是分片广播的使用

当我们的定时任务的任务量较大时,我们可以将任务进行切分,采用多台机器同时执行来帮助我们加快定时任务的执行。xxl-job分片广播模式下会让所有的定时任务同时执行,但是会提供一个叫分片总数的参数来告诉每一个执行者目前该定时任务有多少实例,然后我们人为的可以将任务进行划分来执行。

 @XxlJob("execute1")
 public void execute1() {
     // 分片总数 :总数为该任务的实例数
     XxlJobHelper.getShardTotal();
     System.out.println("用来测试xxl-job是否连通");
 }

网站公告

今日签到

点亮在社区的每一天
去签到