分布式调度开源框架xxl-job项目整合

xxl-job开源GitHub地址:https://github.com/xuxueli/xxl-job/

目录

安装MySQL

查看MySQL镜像是否拉取成功

运行MySQL容器

MySQL是否启动成功

进入MySQL

创建数据库和表

拉取xxl-job镜像

启动xxljob

登录xxljob任务管理后台:http://localhost:8080/xxl-job-admin/toLogin

maven引入xxljob包

实际项目中,xxjjob配置注入

naocs配置

创建任务task类:

END:


安装MySQL

docker pull mysql:latest

查看MySQL镜像是否拉取成功

docker images

运行MySQL容器

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 mysql

MySQL是否启动成功

docker ps

进入MySQL

docker exec -it mysql-test /bin/bash
mysql -uroot -p123123

创建数据库和表

SQL脚本在GitHub:https://github.com/xuxueli/xxl-job/blob/2.3.0/doc/db/tables_xxl_job.sql

拉取xxl-job镜像

docker pull xuxueli/xxl-job-admin:2.3.0

启动xxljob

docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=root  --spring.datasource.password=123123" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin  --privileged=true -d 24cc0d9dcf54

登录xxljob任务管理后台:http://localhost:8080/xxl-job-admin/toLogin

账号admin密码123456

maven引入xxljob包

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

实际项目中,xxjjob配置注入

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
 */
@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

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

    /**
     * 执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;
     * 地址信息用于"调度中心请求并触发任务"和"执行器注册"。
     * 执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,
     * 该IP不会绑定Host仅作为通讯实用。单机部署多个执行器时,注意要配置不同执行器端口
     **/
    @Value("${spring.application.name:ms-material-server}")
    private String appName;

    @Value("${config:}")
    private String env;

    @Value("${xxl.job.executor.ip:}")
    private String ip;

    @Value("${xxl.job.executor.port:9999}")
    private int port;

    @Value("${xxl.job.accessToken:}")
    private String accessToken;

    /**
     * 执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
     * 与服务日志目录一致
     **/
    @Value("${logging.path}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays:30}")
    private int logRetentionDays;

    /**横线*/
    public final static String LINE = "-";


    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        logger.info("物料服务分布式调度任务配置初始化,ms-material-server xxl-job config init");
        logger.info("物料服务分布式调度任务配置初始化,adminAddresses:{},appName:{},ip:{},port:{},accessToken:{},logPath:{},logRetentionDays:{}",
                adminAddresses,appName,ip,port,accessToken,logPath,logRetentionDays );
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appName + LINE + env);
        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();
     */


}

naocs配置

xxl:
  job:
    admin:
      # 调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"
      addresses: http://localhost:8080/xxl-job-admin
    executor:
      # 执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
      logretentiondays: 30
      #执行器默认端口为9999
      port: 9999

创建任务task类:

任务类必须交给spring管理,使用@Component

方法@XxlJob("TestByParameterTaskExecute")中的值对应xxljob任务管理中的JobHandler

相同的服务最好绑定同一个执行器,xxljob配置注入时会自动注册到执行里

/**
 * @description     测试传参任务
 * @author hljliao@foxmail.com
 * @date 2021/5/25 11:06
 * @version 1.0.0
 **/
@Component
public class TestByParameterTask {

	private static final Logger LOGGER = LoggerFactory.getLogger(TestByParameterTask.class);


	/**
	 * @Description 测试传参任务
	 * @Author hljliao@foxmail.com
	 * @Date 2021/4/24 22:41
	 **/
	@XxlJob("TestByParameterTaskExecute")
	public ReturnT<String> execute(String param) throws Exception {

		CheckParamsUtil.checkNull("param", param);
//		SettleResultBillStatisticRequest request = JSON.parseObject(param, SettleResultBillStatisticRequest.class);
//		LOGGER.info(JSON.toJSONString(request));

		return ReturnT.SUCCESS;
	}


}

END:

到这里就可以使用xxljob管理调度自己服务中的任务了。

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值