如何使⽤xxl-job调度shell脚本
刚刚开始使⽤XXL-JOB任务调度,使⽤Java Bean⽅式开发很⽅便。不过google了⼀下并没有详细的关于如何使⽤XXL-JOB调度shell脚本的介绍,本⽂记录⼀下。
⾸先看⼀下xxl-job⽂档中的原理说明
原理:
脚本任务的托管在调度中⼼,脚本逻辑在执⾏器运⾏。当触发脚本任务时,执⾏器会加载脚本源码在执⾏器机器上⽣成⼀份脚本⽂件,然后通过Java代码调⽤该脚本;并且实时将脚本输出⽇志写到任务⽇志⽂件中,从⽽在调度中⼼可以实时监控脚本运⾏情况
官⽅参考:
需求:
⽐如说你的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
shell代码
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容器获取到类的信息后利⽤反射机制去执⾏)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。