分布式任务调度平台XXL-JOB快速入门

目录

 

背景介绍

推荐

什么是XXL-job?

如何获取xxl-job?

如何学习

如何使用

调用平台管理后台搭建

其他项目中使用xxl-job任务调度

自此:搭建任务调度管理后台、自己项目整合xxl-job完毕,超级简答。

在官方问题中,提供了7中整合的方式,以及相关配置。具体需要哪种形式的可以看看官网文档哦

项目部署

希望对大家有帮助,是不是很方便呢,超好用!推荐


背景介绍

项目中经常会用到定时任务,之前在项目中定时任务主要是使用@scheduled注解来完成,

使用@Scheduled弊端:

1、笨重繁琐,定时任务执行的时间必须写在代码里面,如果需要修改定时任务时间,必须重新上传代码,启动后才会生效。

2、不够灵活,无法控制定时任务的随时执行。例如测试人员做了一笔交易之后,需要等待定时任务自动执行,才会触发后续的操作,无法立即操作。

综合来说:需要一个定时任务管理的功能,在这里能支持配置定时任务的执行时间,并且支持手动执行定时任务。

推荐

在github上看了集中任务调度的框架,最终选择“分布式任务调度平台XXL-JOB”,个人推荐蛤。

什么是XXL-job?

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用

如何获取xxl-job?

个人推荐访问码云:https://gitee.com/xuxueli0323/xxl-job 直接克隆下载即可

或者在github上直接下载,不支持外网的,建议还是用码云呗

如何学习

学习建议:

在官网的API学习

xxl-job提供了超级详细的API

官方文档地址:https://www.xuxueli.com/xxl-job/

非常推荐大家花两个小时的时间大概阅读一下xxl-job的官网文档,基本都是文档里面学习的

如果你是一个小白,那么也可以跟随着我这篇文章,做一个非常简单的入门Demo,整体的项目搭建完毕之后,再进一步的去学习xxl-jon。

如何使用

本篇文章将结合API一步步给大家演示如何使用

调用平台管理后台搭建

1、获取xxl-job源码,在文档中,明确指出两个地址去下载xxl-job项目源码

2、请下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可。

D:\graduation\jobShcdule\xxl-job\doc\db

使用navicat,右键执行tables_xxl_job.sql文件即可,它会创建xxl_job数据库,且初始化8张表。

3、使用idea打开下载的项目

这个项目非常贴心,在下载的源码xxl-job提供了定时任务管理后台,并且针对不同的项目提供了类型的整合Demo

xxl-job-admin:定时任务管理后台项目

xxl-job-core:最基础的项目jar,需要依赖这个

xxl-job-executor-sample:提供了多种项目整合的DEMO

         xxl-job-executor-sample-spring:spring项目整合xxl-job项目demo,需要增加application-xxl-job.xml,并且xml的具体配置信息全部写好

         xxl-job-executor-sample-springboot:springboot项目整合xxl-job项目demo

4、 配置部署“调度中心”

调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
/xxl-job/xxl-job-admin/src/main/resources/application.properties
### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
xxl.job.i18n=zh_CN
## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
xxl.job.logretentiondays=30

5、启动xxl-job-admin项目,由于是springboot项目,因此可以直接运行XxlJobAdminApplication即可

注意

第一次在启动XxlJobAdminApplication项目时,可能会报各种包找不到。此时需要直接clean xxl-job,以及install xxl-job。因为这是一个聚合项目,因此只需要install xxl-job父工程即可,它会按照顺序去构建xxl-job-code、xxl-job-admin、以及xxl-job-executor-samples

6、登录访问

调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

自此,调度平台管理后台部署完毕,超级无敌简单的。

具体这些操作详细看文档的:快速入门2.1~2.3有详细案例说明哦

其他项目中使用xxl-job任务调度

在官网文档的:2.4 ~ 2.5 有详细说明,如果看不懂,也可以看我的。

1、看下载的executor-samples的demo。为了演示方便,直接使用springboot与xxl-job整合的案例。

这里为什么不使用spring与xxl-job案例呢?因为懒得去整合ssm三大框架

2、在代码以及文档中我们可以看到:

2.1 maven依赖 ~ 在pom文件引入xxl-code的jar包依赖

2.2 执行器配置

执行器地址:

/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

执行器配置,配置内容说明:

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

2.3 执行器组件配置

@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
    logger.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.4 开发第一个任务“Hello World”-- BEAN模式,实际上有八种模式去使用这个xxl-job,这里介绍我采用的Bean模式,也是最简单的一种啦


    /**
     * 1、简单任务示例(Bean模式)
     */
    @XxlJob("demoJobHandler")
    public ReturnT<String> demoJobHandler(String param) throws Exception {
        XxlJobLogger.log("XXL-JOB, Hello World.");

        for (int i = 0; i < 5; i++) {
            XxlJobLogger.log("beat at:" + i);
            TimeUnit.SECONDS.sleep(2);
        }
        return ReturnT.SUCCESS;
    }

2.5  然后在管理员后台中配置执行任务调度即可

3、基于上述提供demo的理解,将xxl-job整合进入自己的项目中。新建一个springboot项目:zhenghongbin

 

4、配置maven依赖

5、执行器配置~每个字段的详细解释看上2.2点,具体的配置看xxl-job-executor-samples

注意:这里值得一提的是appname,必须跟调用平台后台配置的执行器Appname一致,否则就不生效

6、增加执行器组件

这一段配置代码,无论是在demo还是在文档中都明确提出了,详细看下图

7、写一个最简单的Hello ~ bean方式

8、启动zhenghongbin项目~ 自己的项目

9、在任务调用中心配置执行任务 ~ bean

10、执行

在自己的项目中:

自此:搭建任务调度管理后台、自己项目整合xxl-job完毕,超级简答。

在官方问题中,提供了7中整合的方式,以及相关配置。具体需要哪种形式的可以看看官网文档哦

项目部署

项目部署超级简单,当做一个普通的项目去发布即可。例如上述的两个项目都是springboot项目,因此使用jar包部署即可

1、编译任务调度中心后台jar

2、编译生成自己项目jar

 

生成这两个jar包,直接丢到服务器上,使用java -jar xxx 的方式去启动,出来的效果跟本地演示是一样的。

注意如果是服务器上运行,记得开放端口即可。

 

希望对大家有帮助,是不是很方便呢,超好用!推荐

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值