如何使用xxl-job调度shell脚本
刚刚开始使用XXL-JOB任务调度框架,使用Java Bean方式开发很方便。不过google了一下并没有详细的关于如何使用XXL-JOB调度shell脚本的介绍,本文记录一下。首先看一下xxl-job文档中的原理说明原理:脚本任务的源码托管在调度中心,脚本逻辑在执行器运行。当触发脚本任务时,执行器会加载脚本源码在执行器机器上生成一份脚本文件,然后通过Java代码调用该脚本;并且实时将...
刚刚开始使用XXL-JOB任务调度框架,使用Java Bean方式开发很方便。不过google了一下并没有详细的关于如何使用XXL-JOB调度shell脚本的介绍,本文记录一下。
首先看一下xxl-job文档中的原理说明
原理:
脚本任务的源码托管在调度中心,脚本逻辑在执行器运行。当触发脚本任务时,执行器会加载脚本源码在执行器机器上生成一份脚本文件,然后通过Java代码调用该脚本;并且实时将脚本输出日志写到任务日志文件中,从而在调度中心可以实时监控脚本运行情况
官方参考:5.5.3 GLUE模式(Shell) + GLUE模式(Python) + GLUE模式(NodeJS)
需求:
比如说你的xxl-job admin调度中心在192.168.211.101上
你想调度192.168.211.2上的/usr/local/helloworld.sh脚本文件
怎么办呢?
开发步骤:
1. 配置执行器
可以参照xxl-job源码包下的xxl-job-executor-sample-springboot写一个简单的执行器,需要注意的是,即便你只想调度shell,java代码中并没有要调度的任务,仍然需要这个执行器(至于说为什么,可以参考前面的调度shell的原理)
这里就是在192.168.211.2启动了一个8081端口的spring boot服务,并且暴露的与xxl-job admin通信的netty server port为9999

2. 创建任务

3. 编写glue脚本

4. 测试执行过程
![]()
其执行日志

我们进到执行器所在机器192.168.211.2的/data/applogs/xxl-job/jobhandler/gluesource路径下,看到其生成了2_1562216699000.sh文件
打开发现就是我们编写的glue脚本

其执行日志记录在/data/applogs/xxl-job/jobhandler/2019-07-04下
![]()
打开文件

就是我们在xxl-job admin中看到的执行日志
xxl-job的工作过程如下:
在xxl-job admin调度中心先触发任务,然后通过执行器注册的netty通信server port发送执行命令(无论是java定时任务,还是shell脚本任务),发送的执行命令其实就是告诉9999端口去8081的endpoint执行指定JobHandler的execute方法(具体是使用指定JobHandler的名称查找jvm中@JobHandler容器获取到类的信息后利用反射机制去执行)
更多推荐


所有评论(0)