测试XXL-Job任务调度器
安装:
建立目录:
$ mkdir /opt/xxl-job/admin/
$ cd /opt/xxl-job/admin/
修改配置文件:
$ wget https://github.com/xuxueli/xxl-job/raw/2.4.0/xxl-job-admin/src/main/resources/logback.xml
$ vi logback.xml
…
<property name=”log.path” value=”./logs/xxl-job-admin.log”/>
…
$ wget https://github.com/xuxueli/xxl-job/raw/2.4.0/xxl-job-admin/src/main/resources/application.properties
$ vi application.properties
…
server.port=9999
…
spring.datasource.url=jdbc:mysql://192.168.0.180:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=rootPassword
…
spring.mail.host=smtp.exmail.qq.com
spring.mail.port=465
spring.mail.username=ops@yunbu.me
spring.mail.from=ops@yunbu.me
spring.mail.password=opsPassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
…
xxl.job.accessToken=kDg56Za92Ujl
…
xxl.job.logretentiondays=10
…
导入数据库表:
$ wget https://github.com/xuxueli/xxl-job/raw/2.4.0/doc/db/tables_xxl_job.sql
$ mysql -uroot -p -h192.168.0.180 -P3306 <./tables_xxl_job.sql
第一种docker方式运行admin(不推荐,因为后面执行器总是要编译的,一起编译出来运行更简单):
拉取docker镜像并启动:
$ docker pull xuxueli/xxl-job-admin:2.4.0
$ docker run -d -p 9999:9999 –name xxl-job-admin -v /opt/xxl-job/admin/application.properties:/application.properties -v /opt/xxl-job/admin/logback.xml:/logback.xml -e PARAMS=”–logging.config=/logback.xml –spring.config.location=/application.properties” xuxueli/xxl-job-admin:2.4.0
查看启动结果:
$ docker ps
$ tail -200f logs/xxl-job/xxl-job-admin.log
…
Started XxlJobAdminApplication in 5.541 seconds (JVM running for 6.297)
>>>>>>>>> init xxl-job admin scheduler success.
停止:
$ docker stop YYYYYY
$ docker start YYYYY
重新初始化并启动:
$ docker stop YYYYYY
$ docker rm YYYYYY
$ docker run…
访问:
http://192.168.0.178:9999/xxl-job-admin/
默认用户名、密码: admin / 123456
第二种编译方式运行admin:
通过编译后执行:
$ nohup java -Xmn64m -Xms256m -Xmx256m -jar xxl-job-admin-2.4.0.jar –logging.config=./logback.xml –spring.config.location=./application.properties >/dev/null 2>&1 &
运行执行器:
执行器必须自己编译后执行(至少需要一个,内置的httpJobHandler、commandJobHandler也要编译后执行):
$ mkdir /opt/xxl-job/executor/
$ cd /opt/xxl-job/executor/
$ vi logback.xml
…
<property name=”log.path” value=”./logs/xxl-job-executor-sample-springboot.log”/>
…
$ vi application.properties
…
server.port=8081
…
#logging.config=classpath:logback.xml
…
xxl.job.admin.addresses=http://192.168.0.178:9999/xxl-job-admin
xxl.job.accessToken=kDg56Za92Ujl
…
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=192.168.0.178
xxl.job.executor.port=9998
xxl.job.executor.logpath=./logs/jobhandler
xxl.job.executor.logretentiondays=10
…
启动:
$ nohup java -Xmn64m -Xms256m -Xmx256m -jar xxl-job-executor-sample-springboot-2.4.0.jar –logging.config=./logback.xml –spring.config.location=./application.properties >/dev/null 2>&1 &
$ ps axf | grep xxl
$ tail -200f logs/xxl-job-executor-sample-springboot.log
>>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9998
检查:
通过在admin页面的“执行器管理”上添加新的执行器:http://192.168.0.178:9999/xxl-job-admin/jobgroup
AppName: xxl-job-executor-sample (要和执行器配置文件的xxl.job.executor.appname的名字完全一样)
名称: 实例执行器
注册方式: 自动注册
机器地址: 空着即可 (重启一次执行器之后,就可以看到会自动填上了机器地址和端口,就是执行器配置文件里的ip和port)
在admin页面的“任务管理”上添加新的任务:
执行器: 选择“实例执行器”
任务描述、负责人、报警邮件:按需填写
调度类型: 暂时选“无”,后续可选“CRON”或“固定速度”
运行模式:选择”BEAN”
JobHandler: httpJobHandler
任务参数(注意分3行,每行英文冒号前为关键字):
url: http://ostest.yunbu.me/osadmin/tapjoy/ads/getTimeData?startTime=2023-11-18&endTime=2023-11-18
method: get
data: content
路由策略:按需选择
定义好保存了之后,右侧“操作”选择“执行一次”,然后可以从admin左侧选择“调度日志”去查看该次调度的结果:
调度日志右侧“操作”选择“执行日志”可以看到执行器的执行log。
测试使用“GLUE”运行模式:
添加新的执行器:
AppName: aaaa
名称: aaaa
注册方式: 手动注册
机器地址: http://192.168.0.178:9998/
添加新的任务:
执行器: 选择“aaaa”
任务描述、负责人、报警邮件:按需填写
调度类型: 暂时选“无”,后续可选“CRON”或“固定速度”
运行模式:选择”GLUE(Shell)”
JobHandler: 不用管
任务参数: 不用管
路由策略:按需选择
定义好保存了之后,右侧“操作”选择“GLUE IDE”,然后在IDE里面编辑shell代码并保存:
#!/bin/bash
echo “xxl-job: hello shell”
echo “脚本位置:$0”
echo “任务参数:$1”
echo “分片序号 = $2”
echo “分片总数 = $3”
touch aaaa
echo “Good bye!”
exit 0
返回任务页面右侧“操作”选择“运行一次”,进入“调度日志”右侧“操作”选择“执行日志”可以看到执行器的执行log。
GLUE类型的工作目录为xxl-job-executor-sample-springboot-2.4.0.jar所在的目录,比如这里为:/opt/xxl-job/executor目录。
$ ll /opt/xxl-job/executor
aaaa application.properties logback.xml logs xxl-job-executor-sample-springboot-2.4.0.jar
这里多了一个shell脚本里touch的aaaa文件。