xxl-job使用教程

  • Post author:
  • Post category:其他


1、xxl-job本地启动

码云上拉取代码


gitee地址

导入项目中的表数据到mysql

修改xxl-job-admin对应的数据库配置,改成自己的数据库地址

找到这两个启动类启动,访问

http://localhost:8080/xxl-job-admin/

即可

xxl-job官方 数据库使用的是mysql,并没有oracle版本的,贴一个亲测实际有效的,数据库使用oracle改造后的版本


地址:xxl-job-oracle: xxl-job-oracle

2、跨平台http调用

默认执行器上线

选择执行器新建

运行模式选bean;

JobHandler填写默认的:httpJobHandler;

配置Cron表达式;

任务参数格式:

url:http://127.0.0.1:9090/test2?param=test

method:POST

data:{“username”: “张三”, “password”: “123test”}

调用成功!

3、SpringBoot自定义执行器,接入xxl-job

添加依赖

        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.3.1</version>
        </dependency>

增加xxl-job配置类

@Configuration
public class XxlJobConfiguration {

    private Logger logger = LoggerFactory.getLogger(XxlJobConfiguration.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;
    }
}

application.yml添加相应的配置,配置accessToken、xxl-job-admin的地址、执行器名字

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

在对应的方法上添加@XxlJob注解

@Component
@Slf4j
public class MyJobHandler {

    @XxlJob("myJobHandler")
    public void myJobHandler() {
        String param = XxlJobHelper.getJobParam();
        log.info("param = {}", param);
        log.info("定时任务调用了!!!");
    }

    @XxlJob("myJobHandlerTest")
    public void myJobHandlerTest() {
        String param = XxlJobHelper.getJobParam();
        log.info("myJobHandlerTest param = {}", param);
        log.info(" myJobHandlerTest 定时任务调用了!!!");
    }
}

注意:配置accessToken时,要对应上xxl-job-admin模块中的xxl.job.accessToken配置,否则不能进行调度!

新增执行器

填写配置文件中配置的executor.appname,这个必须对应,写上名称,再选自动注册,启动SpringBoot项目之后,很快执行器就上线了

任务管理,选择对应的执行器,新增任务

运行模式选bean模式,JobHandler对应@XxlJob注解的值,调用此方法

    @XxlJob("myJobHandlerTest")
    public void myJobHandlerTest() {

        //XxlJobHelper.getJobParam()可以获取页面中,任务参数传入的参数!
        String param = XxlJobHelper.getJobParam();
        log.info("myJobHandlerTest param = {}", param);
        log.info(" myJobHandlerTest 定时任务调用了!!!");
    }

启动任务后,即可实现任务调度了



版权声明:本文为Zz1366原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。