失败原因:xxl-job(调度器)部署在腾讯云服务器上,但是web程序(执行器)在本地Windows上,在不同局域网中,调度失败
解决办法:使用内网穿透解决:内网穿透可以让本地机器(执行器)暴露在公共网络上,从而使位于腾讯云服务器上的 XXL-Job 调度器能够访问本地执行器
常见的内网穿透工具:
- ngrok:一个简单的内网穿透工具,可以将本地服务暴露为公网可访问的地址。
- frp:一个功能强大的内网穿透工具,支持多种协议。
- 花生壳:国内的一款内网穿透工具,适合一些网络环境下使用。
- natapp:国内提供的内网穿透服务,支持免费的内网穿透。
本文使用 ngrok 解决
1. 下载 ngrok(ngrok 官网):下载地址:https://ngrok.com/download
2. 下载好之后,解压缩文件
3. 双击 ngrok.exe 可执行文件
输入命令:ngrok http 9999,来启动一个本地端口 9999 的内网穿透
(9999)是
首次使用时会显示如下错误:
Use "ngrok [command] --help" for more information about a command. ERROR: authentication failed: Usage of ngrok requires a verified account and authtoken.
ERROR:
ERROR: Sign up for an account: https://dashboard.ngrok.com/signup
ERROR: Install your authtoken: https://dashboard.ngrok.com/get-started/your-authtoken
ERROR: ERROR: ERR_NGROK_4018
ERROR: https://ngrok.com/docs/errors/err_ngrok_4018
ERROR:
D:\ngrok\ngrok-v3-stable-windows-amd64>
原因是没有登录,按照提示进行注册登录,填写姓名邮箱注册,前往邮箱进行验证之后,
会让你使用Authenticator 这个app来扫码上面的二维码,然后输入一次性代码来登录, 登录成功之后,会为你生成Authtoken
在刚才的命令行,执行该命令即可;
执行完后,再执行 ngrok http 9999 命令,会生成一个映射到本地端口号的公网URL,复制该URL,填写到xxl-job中对应的执行器中即可
最后再试着调度执行一次,就可以执行成功了