#随着项目体量增大,定时任务越来越多,于是需要引入Xxl-job来管理定时任务
1.准备阶段与下载安装
参考文章:
【Linux】Linux下安装XXL-JOB(图文解说详细版)_linux安装xxl-job-CSDN博客
本人版本2.3.1。
2.问题
问题1.xxl-job remoting error(connect timed out), for url : http://116.198.216.5:9999/run
排除完IP地址填写错误的情况。
当两台云服务器分别运行xxl-job项目和spring boot项目时,出现远程连接超时问题。
1.可以两个Linux服务器先互相 ping,看是否ping通。如果ping通,则表示双方网络正常。
2.使用 telnet ip port 的方式,测试端口是否正常使用。
例如我执行器端口为9998,则需要确保运行spring boot项目的服务器开发9998端口
telnet xxx.xx.xx.xxx 9998
成功则显示
Trying xxx.xx.xx.xxx...
Connected to xxx.xx.xx.xxx.
Escape character is '^]'.
Linux需提前下载telnet
sudo yum install telnet -y
问题2.code=500, msg=The access token is wrong., content=null
当xxl.job.accessToken为空时,执行任务会出现code=500, msg=The access token is wrong., content=null的问题,可将accessToken设为合适字符串,不能为空,其它执行器都需要统一accessToken。
问题3.xxl-job remoting server error.Address already in use: bind
起初以为真是端口占用,看文章发现是 2.2.0以上版本不用在注册XxlJobSpringExecutor的bean加上(initMethod = "start", destroyMethod = "destroy")。
问题4.在任务管理中,手动触发任务可以执行成功,通过cron触发会出现执行失败的情况。
可能有多个Xxl-job项目都连接相同数据库,关闭其它Xxl-job项目。
3.小tips
当Linux启动Xxl-job项目时,如果修改了项目的配置文件,需要重启项目让配置生效,每次杀死应用再运行项目有些麻烦,可以通过脚本一键重启。
# 查找进程名称
process_name="xxl-job"
pid=$(ps aux | grep "$process_name" | grep -v grep | awk '{print $2}')
if [ -z "$pid" ]; then
echo "未找到进程: $process_name"
else
echo "找到进程ID: $pid"
# 结束进程
kill -9 $pid
echo "进程 $pid 已被终止"
fi
nohup java -jar xxl-job-admin/target/xxl-job-admin-2.3.1.jar &
nohup java -jar xxl-job-executor-samples/xxl-job-executor-sample-springboot/target/xxl-job-executor-sample-springboot-2.3.1.jar &
图中my-job.sh文件,放在安装目录下,且赋予执行权限,注意修改jar包的包名对应自己的版本号。
chmod +x my-job.sh