框架整合(一)- 分布式调度框架xxl-job的简单使用

xxl-job是一款分布式调度框架,可以配置时间来定时启动项目,一般使用于项目服务多但执行时间较短,想快速启动等应用场景。

安装调度中心xxl-job-admin
  • 这里使用的是window10上的docker进行安装

  • 注意:安装xxl-job之前需要先在docker上安装mysql

  • 安装步骤可参考另一篇博文(第4、5点):记录(三)Docker安装镜像操作相关命令.

  • docker安装成功,先启动mysql再启动xxl-job-admin
    在这里插入图片描述

  • 根据配置的ip和端口访问本地路径:http://localhost:8089/xxl-job-admin/

  • 默认账户密码: admin , 123456
    在这里插入图片描述

整合springboot项目
  • 创建一个springboot项目(或者使用正在开发中的springboot项目或微服务项目都可)
  • application.yml加入xxl-job相关配置(可查看官方文档)
xxl:
  job:
    admin:
      addresses: http://127.0.0.1:8089/xxl-job-admin  #本地调度中心地址
    executor:
      appname: xxl-job-executor-sample #执行器地址
      ### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: D:/xxl-job
     # port: 10000  # 注:使用路由策略为分片模式时不要配置端口
  • 创建xxl-job执行器组件类XxlJobConfig.java
**
 * @program: rabbitmq-demo
 * @description: xxl-job执行器
 * @author: xf
 * @create: 2021-05-30 16:47
 **/
@Component
@Slf4j
public class XxlJobConfig {

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

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

    @Value("${xxl.job.executor.logpath}")
    private String logPath;
    
//    @Value("${xxl.job.executor.port}")
//    private Integer port;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        log.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appname);
//        xxlJobSpringExecutor.setIp(ip);
//        xxlJobSpringExecutor.setPort(port);
//        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
//        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
}
  • 在调度中心管理界面上新增一个调度任务

在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述

注:路由策略阻塞处理策略 着重使用

  • 创建一个组件使启动器和执行器关联起来
  • 路由策略:使用分片模式,可大大较少执行时间
/**
 * @program: rabbitmq-demo
 * @description: BEAN模式开发
 * @author: xf
 * @create: 2021-05-30 17:08
 **/
@Component
@Slf4j
public class MyxxLJobHandler {

    @XxlJob("myxxLjobHandler")
    public ReturnT<String> demoJobHandler() throws Exception {
        XxlJobHelper.log("XXL-JOB, Hello World.");

        //路由策略:使用分片模式,耗时减半
        int shardIndex = XxlJobHelper.getShardIndex();//第几个执行器
        int shardTotal = XxlJobHelper.getShardTotal();//总共多少个执行器
        List<Integer> list = Arrays.asList(1,2,3,4);
        list.forEach(x->{
            //进行取模过滤不同的数据
            if(x%shardTotal==shardIndex){
                log.info("执行第"+x+"条数据------");
            }
        });

        return ReturnT.SUCCESS;
    }
}
  • 项目中再创建一个相同的启动器并启动(需修改端口)(分片模式使用)
  • 在这里插入图片描述
    在这里插入图片描述
  • 查看调度中心执行器管理,注册成功2个执行器
    在这里插入图片描述

注:使用分片模式时,配置文件中不要自己配置端口,不然启动第二个执行器时,会报端口冲突的异常。不配做xxl-job会自动分配端口号

  • 修改路由策略为分片模式
    在这里插入图片描述

  • 执行一次任务
    在这里插入图片描述

  • 查看控制台
    在这里插入图片描述
    在这里插入图片描述

  • 完成,奥利给。


注:阻塞处理策略:一般选择丢弃后续调度(具体使用效果步骤略),自己记住就好啦


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RemainderTime

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值