昨天有同事找我到,说他搭建的 XXL-JOB 任务调度系统不能工做了,调用老是出错(服务端返回 500)但愿我能帮忙处理一下,不过说实话我也没有搭建过 XXL-JOB 的经验,可是既然同事请求了,就只能硬着头皮帮忙一块儿看下,解决的过程还算比较顺利,可是发现网上这块的资料不多,因此打算把解决过程用博客记录下来,但愿能够帮助到遇到一样问题的同窗们git
同事跟我提及初怀疑是 Shiro 拦截了定时任务的请求,可是他注释了 Shiro 相关的代码后,XXL-JOB 的请求仍是没法成功(请求成功一次后,再次请求就出现标题的超时错误),而后我查看了 XXL-JOB 的请求日志,服务端的 HTTP 返回码是 500,错误日志是 XxlRpcException: xxl-rpc, request timeout at ,基本排除了是 Shiro 认证致使的问题,缘由是由于 Shiro 是认证框架,认证不经过的话,返回的错误码应该是 401 Unauthorized 类的异常,可是从 XXL-JOB 的日志显示这明显是通讯错误,难道是某个相关的服务被关了?github
带着这个疑问我去查了下 XXL-JOB 的文档,项目要使用 XXL-JOB 的调用,就会引入的 xxl-job-core 包,xxl 客户端项目就会在启动时使用占用一个端口监听而且消费 XXL-JOB 发过来的调用(咱们设置的端口是 9999),我尝试启动项目后观察端口占用状况,项目启动后端口 9999 是正常启用的,而后在我使用 XXL-JOB 手动执行启动后(第一次请求是成功的),而后我再查看端口状况,发现 9999 端口就已经关闭了,因此问题在这里已经被找到了, 客户端项目的 xxl 监听端口被关闭,致使后续 XXL-JOB 请求都没法响应,天然也就请求超时,可是这明显不像是程序问题,由于之前没出现过。近期才开始出现。因而我经过搜索引擎找到了 xxl-job 官方在 github 的 Issue https://github.com/xuxueli/xxl-job/issues/586 ,经过 issue 的内容看到官方已经告知是版本的 BUG,而且在新版中这个 BUG 已经修复,如下是我使用的版本信息后端
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.0.0</version> </dependency>
而且我发现这个版本在 mvnrepository 也几乎没人用微信
我果断的把客户端的 xxl-job-core 升级到官方推荐的最新版,代码以下:框架
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.0.0</version> </dependency>
而后启动项目,在 XXL-JOB 手动执行任务,查看端口状况,问题解决。。 更多技术咨询,请关注公众号,find me ! 搜索引擎