JECloud_JOB操作手册

首先在项目中添加依赖,在Apollo中添加xxljob的配置,根据使用步骤在项目中添加配置,完成业务的编写,在调度中心新增执行器,新增调度任务,启动任务完成对job的使用。

配置步骤

添加依赖

在项目最外层的pom.xml中添加依赖

<dependency>
        <groupId>jecloud</groupId>
        <artifactId>jecloud-common-xxljob</artifactId>
        <version>${jecloud.common.version}</version>
</dependency>

项目配置文件application.yml文件中apollo的设置

apollo:
  meta: http://127.0.0.1:8080
  bootstrap:
    enabled: true
    namespaces: jdbc,redis,xxljob
    eagerLoad:
    enabled: true
  cluster: default
  autoUpdateInjectedSpringProperties: false
  cache-dir: /usr/local/apollo

对执行器的配置:(我们放在apollo配置中心)

配置项 描述
xxl.job.admin.addresses 调度中心地址 (如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行”执行器心跳注册”和”任务结果回调”;为空则关闭自动注册;)
xxl.job.executor.appname 执行器注册地址,默认为空即可(优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址)
xxl.job.executor.address 执行器注册地址,默认为空即可(优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址)
xxl.job.executor.ip 执行器IP [选填]:(默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 “执行器注册” 和 “调度中心请求并触发任务”)
xxl.job.executor.port 执行器端口,(小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口)
xxl.job.accessToken 执行器通讯TOKEN(非空时启用,必须和调度服务配置的一致)
xxl.job.executor.logpath 执行器运行日志文件存储磁盘路径(需要对该路径拥有读写权限;为空则使用默认路径)
xxl.job.executor.logretentiondays 执行器日志文件保存天数 (过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能)

使用步骤

在项目中config文件添加XxlJobConfig对配置的引用

/**
 * xxl-job config
 */
@Configuration
public class XxlJobConfig implements EnvironmentAware {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    private Environment environment;
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(environment.getProperty("xxl.job.admin.addresses"));
        xxlJobSpringExecutor.setAppname(environment.getProperty("xxl.job.executor.appname"));
        xxlJobSpringExecutor.setAddress(environment.getProperty("xxl.job.executor.address"));
        xxlJobSpringExecutor.setIp(environment.getProperty("xxl.job.executor.ip"));
        if(!Strings.isNullOrEmpty(environment.getProperty("xxl.job.executor.port"))){
            xxlJobSpringExecutor.setPort(Integer.parseInt(environment.getProperty("xxl.job.executor.port")));
        }
        xxlJobSpringExecutor.setAccessToken(environment.getProperty("xxl.job.accessToken"));
        xxlJobSpringExecutor.setLogPath(environment.getProperty("xxl.job.executor.logpath"));
        if(!Strings.isNullOrEmpty(environment.getProperty("xxl.job.executor.logretentiondays"))){
            xxlJobSpringExecutor.setLogRetentionDays(Integer.parseInt(environment.getProperty("xxl.job.executor.logretentiondays")));
        }
        return xxlJobSpringExecutor;
    }
    /**
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     * <p>
     * 1、引入依赖:
     * <dependency>
     * <groupId>org.springframework.cloud</groupId>
     * <artifactId>spring-cloud-commons</artifactId>
     * <version>${version}</version>
     * </dependency>
     * <p>
     * 2、配置文件,或者容器启动变量
     * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     * <p>
     * 3、获取IP
     * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */
    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
}

在方法上添加注解

@XxlJob(“JobHandler”)//同一服务下Handler不可重复

在调度中心添加执行器

调度中心-执行器管理中-新增执行器-输入应用程序配置的appname,自定义名称,可以手动或者自动注册服务的地址(http://ip:host)点击保存

在任务管理添加任务

任务管理-新增调度任务-选择刚刚创建的执行器,填写任务描述、负责人、报警邮件、默认cron模式,cron表达式、运行bean模式、填写项目中配置的JobHandler,剩下的按需设置

调度日志查看调度结果

配置成功后点击运行一次,在调度日志中看调度的结果,如果正常成功,配置启动即可,否则查看日志排查具体原因


注意事项:

  1. 每个任务定义的JobHandler不可重复。

  2. 执行器是内嵌的netty服务器进行的通信的,所以在单机部署多个执行器时要避免端口重复。

  3. 执行器通讯TOKEN如果启用,必须和调度服务配置的一致。

  4. 服务间的appname不可重复

关键字

  1. xxl-job
  2. jecloud-job
  3. job配置
  4. 调度服务
最后编辑: 于春辉  文档更新时间: 2024-08-29 09:50   作者:于春辉