xxl-job连接.md 4.8 KB

定时任务没有执行或者执行错误

排查步骤(从上往下进行排查):

  1. xxl-job是否启动成功
  2. platform配置的xxl-job地址是否正确
  3. platform服务的xxl-job端口是否开放
  4. mall4j-bbc项目中的执行器名称与xxl-job中的执行器名称是否一致
  5. xxl-job执行器中是否有注册的平台端服务
  6. docker容器网络问题

一、xxl-job是否启动成功

xxl-job后台管理页面的访问地址: http://ip:8080/xxl-job-admin

访问 xxl-job 的后台管理页面=,如果能正常访问,说明 xxl-job 启动成功

访问失败且使用容器部署的,可以查看容器日志,一般是数据库配置错误导致xxl-job无法启动, 更改docker-compose.yaml文件中的xxl-job数据库配置后,重启容器即可

容器日志查看命令
docker logs -f mall4j-job

二、platform配置的xxl-job地址是否正确

注:如果使用我们提供的部署模板mall4j-shop一台服务器进行部署,且没有其他改动的,可以忽略这一步骤

访问 xxl-job 的后台管理页面,如果能正常访问,说明 xxl-job 启动成功,此时需要检查 platform 服务的的xxl-job地址配置是否正确

img.png

三、platform服务的xxl-job端口是否开放

注:如果使用我们提供的部署模板mall4j-shop一台服务器进行部署,且没有其他改动的,可以忽略这一步骤

  1. xxl-jobplatfomr服务中有一个执行任务的端口,默认是platform服务端口 + 1000, > 例:8088 + 1000 = 9088 > 8088: platform服务端口, 不同环境端口号不同 > 9088: paltform的xxl-job端口, 根据platform服务端口改变而改变
  2. 所以当platform和xxl-job不在同一台服务器时,需要在platform服务所在服务器上开放8088和9088端口,才能正常使用xxl-job
  3. 如果是自行搭建的容器部署,那么platform的部署容器也要映射上面的两个端口到服务器

img.png

四、mall4j-bbc项目中的执行器名称与xxl-job中的执行器名称是否一致

注: 如果没有修改过执行器名称,那么可以忽略这一步骤

  1. mall4j-bbc 项目的XxlJobConfig配置类中配置了执行器的AppName

  2. xxl-job 后台管理页面的执行器管理中执行器的AppName

比较以上两处的AppName是否一致,如果不一致,那么请修改一致

img.png

五、xxl-job执行器中是否有注册的平台端服务

执行器建议使用自动注册,手动注册的端口很多人都填写错误了,导致执行定时任务失败

注意: 排查执行器注册问题时,请务必保证执行器中连接的platform服务只有一个

如果有多个platform服务注册到了执行器,那么请保证这些注册的platform服务都按上面步骤排查过,服务不存在上述问题

而且执行定时任务不是执行器中注册的所有服务中都执行一遍,而是选择其中一个注册的platform服务去执行这个任务

自动注册

如果platform服务已经启动并且执行器中配置的是自动注册,OnLine 机器地址中没有显示注册的服务,那么请重新检查以上步骤,并重启platform服务

img.png

手动注册

当自动注册的机器地址不是platform实际地址时,可以用手动注册的方式

接口地址配置格式: http://paltform服务ip:platform服务的xxl-job端口

例: platform接口ip为: 192.168.1.4 platform端口为 : 8088 platform服务的xxl-job端口为: 9088(8088 + 1000 = 9088)

实际为: http://192.168.1.4:9088

img.png

六、docker容器网络问题

注:如果使用我们提供的部署模板mall4j-shop一台服务器进行部署,且没有其他改动的,可以忽略这一步骤

情况一:platform服务和xxl-job部署在同一台服务器

  1. 如果platform服务配置文件中的xxl-job地址格式为: http://xxl-job容器名称:8080/xxl-job-admin

解决方法: 配置为同一个网桥

情况二:platform服务和xxl-job部署在不同的服务器

platform服务xxl-job部署在不同服务器时,如果不熟悉容器的网络模式,请不要给容器配置网桥, 直接将容器端口映射到服务器或者使用host模式

platform服务配置xxl-job地址时,使用服务器ip:端口, 不要使用容器名称进行配置