xxl-job任务调度中心(简化版)

一、准备工作

官网:https://www.xuxueli.com/xxl-job
工具:IDEA+maven+MySQL

由于官网上提供的是MySQL,所以推荐使用MySQL
也可以自行修改为Oracle,但是比较麻烦,不仅要将MySQL脚本改为Oracle,还要将mapper.xml文件中的语句进行修改,总之很烦很烦(亲身体会)。

二、下载xxl-job稳定版(这里以2.2.0为例)

官网提供了GITHUB和GITEE两种下载方式,自行下载。

2.1 /xxl-job/doc/db/tables_xxl_job.sql脚本

2.2 将下载好的xxl-job-2.2.0,按照maven格式将源码导入IDEA中,然后使用maven进行编译即可,直接使用compile和package可。(记得修改maven仓库路径)

三、配置调度中心xxl-job-admin

3.1 pom

这里主要修改你的MySQL的版本号,根据个人的MySQL配置选择相应的版本号

3.2 application.properties

这里修改数据源配置

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job-leo-zu?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3.3 启动项目

上述配置完成以后,启动xxl-job-admin
访问调度中心地址:http://localhost:8080/xxl-job-admin
默认登录账号密码:admin/123456
在这里插入图片描述

四、配置部署 执行器项目

这里可以直接使用xxl-job-2.2.0中的xxl-job-executor-sample-springboot,也可以配置自己的项目,步骤都如下:

4.1 pom

在pom文件中引入 xxl-job-core 的maven依赖

4.2 application.properties

address:调度中心地址
appname:与调度中心配置的执行器名称一致
port:可以根据自己的情况设置,默认9999

xxl:
  job:
    admin:
      addresses: http://127.0.0.1:8080/xxl-job-admin # 调度中心地址
    # 执行器通信Token[选填],非空时启用
    accessToken:
    executor: #
      appname: cloud-payment-service-executor
      ip:
      port: 9999
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 10

4.3 执行器组件配置

在这里插入图片描述

package com.leopard.springcloud.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;

/**
 * xxl-job config
 *
 * @author xuxueli 2017-04-28
 */
@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    /**
     * 调度中心地址
     */
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    /**
     * 调度中心认证token
     */
    @Value("${xxl.job.accessToken}")
    private String accessToken;

    /**
     * 执行器名字
     */
    @Value("${xxl.job.executor.appname}")
    private String appname;

    /**
     * 执行器地址
     */
//    @Value("${xxl.job.executor.address}")
//    private String address;

    /**
     * 执行器ip,默认本机
     */
    @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;


    /**
     * 配置初始化
     * @return
     * @author leo-zu 2020-10-28 21:29
     */
    @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;
    }

    /**
     * 针对多网卡、容器内部署等情况,可借助 "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();
     */


}

上述配置完成好以后,就可以开始动手开发了。

五、开发一个项目

5.1 在调度中心配置执行器:

AppName要和之前项目中配置的appname一致
机器地址:一定要加上http://,否则会报无协议的错。然后加上主机地址和端口号
在这里插入图片描述

5.2 新建调度任务

JobHandler一定要和项目中的handler名称一致。
Cron表达式:设置定时任务的时间
在这里插入图片描述

5.3 在项目中创建hadler

在这里插入图片描述

由于新版,所以要加上@XxlJob(“PaymentJobHandler”):支持单个类中开发多个任务方法

package com.leopard.springcloud.job.handler;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import groovy.util.logging.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * @author leo-zu
 * @create 2020-10-28 21:47
 */

@Slf4j
@Component
public class PaymentJobHandler extends IJobHandler {

    private static transient Logger logger = LoggerFactory.getLogger(PaymentJobHandler.class);

    @Override
    @XxlJob("PaymentJobHandler")
    public ReturnT<String> execute(String param) throws Exception {
        logger.info("HELLO WORLD!");
        XxlJobLogger.log("hello world");
        return SUCCESS;
    }
}

5.4 启动项目

  • 启动项目
  • 打开任务调度中心的执行任务

这里我设置的任务是每分钟执行一次定时任务,所以每隔一分钟可以看到控制台打印信息:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值