xxl-job调度任务简单使用

  1. 简介
    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
    https://www.cnblogs.com/xuxueli/p/5021979.html
  2. 使用步骤1:源码下载
    http://gitee.com/xuxueli0323/xxl-job
    https://github.com/xuxueli/xxl-job
    数据库脚本再源码/xxl-job/doc/db/tables_xxl_job.sql
    3.调度中心项目:xxl-job-admin
    修改配置文件中的数据库地址或端口
    /xxl-job/xxl-job-admin/src/main/resources/application.properties

    4.启动xxl-job-admin工程
    访问地址为:http://localhost:8080/xxl-job-admin/
    账号/密码 admin/123456

    5.至此,xxl-job服务启动完成,接下来将xxl植入到所要添加定时任务的工程中
    此次测试我使用的是:2.3.0版本
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version>
</dependency>

6.修改工程的yml文件,引入xxl配置

#引入xxl-job
xxl:
  job:
    admin:
      # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。
      # 执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
      addresses: http://localhost:8080/xxl-job-admin
    executor:
      # 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
      appname: springcloudalibaba-user-experience-job
      # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;
      #      address: http://192.168.2.29:9191
      # 地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
      #      ip: 192.168.2.29
      # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: ./logs/xxl-job
      # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
      logretentiondays: 30
      # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,
      # 单机部署多个执行器时,注意要配置不同执行器端口;
      port: 9192
      # 执行器通讯TOKEN [选填]:非空时启用;
      # accessToken:

7.添加config配置文件

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * xxl-job config
 *
 * @author
 * @date 2020/11/23
 */
@Slf4j
@Configuration
@Profile("!dev")
public class XxlJobConfig {

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @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;

    /**
     * 注意:如果想本机调试,需要设置address、ip
     * @return
     */
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appName);
        //xxlJobSpringExecutor.setAddress(address);
        xxlJobSpringExecutor.setPort(port);
        //xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }
}

8.执行器管理--》添加执行器

添加完成后,可以点击查看详情

9.再代码中创建定时任务

import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.Date;

@Slf4j
@Component
public class UserJob1 implements InitializingBean {

    /**
     * 定时同步群发任务结果
     *
     * @return
     */
    @XxlJob("xxlJobTest")
    public String execute() {


        log.info("start userTodoJob, time at:" + new Date());

        String params = XxlJobHelper.getJobParam();
        JSONObject jsonObject = JSONObject.parseObject(params);
        Integer orgId = jsonObject.getInteger("orgId");
        String corpId = jsonObject.getString("corpId");
        System.out.println("执行了"+params);

        return "执行了";
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        log.info("Combination Job init suc at: " + new Date());
    }
}

10.任务管理中添加新的任务

添加完成后,可再后面对该任务进行操作

posted @ 2022-02-25 16:17  风之丘code  阅读(553)  评论(0编辑  收藏  举报