記一次 XxlRpcException:xxl-rpc request timeout at 超時問題


事件起因

昨天有同事找我到,說他搭建的 XXL-JOB 任務調度系統不能工作了,調用總是出錯(服務端返回 500)希望我能幫忙處理一下,不過說實話我也沒有搭建過 XXL-JOB 的經驗,但是既然同事請求了,就只能硬着頭皮幫忙一起看下,解決的過程還算比較順利,但是發現網上這塊的資料很少,所以打算把解決過程用博客記錄下來,希望可以幫助到遇到同樣問題的同學們

解決過程

同事跟我說起初懷疑是 Shiro 攔截了定時任務的請求,但是他注釋了 Shiro 相關的代碼后,XXL-JOB 的請求還是無法成功(請求成功一次后,再次請求就出現標題的超時錯誤),然后我查看了 XXL-JOB 的請求日志,服務端的 HTTP 返回碼是 500,錯誤日志是 XxlRpcException: xxl-rpc, request timeout at ,基本排除了是 Shiro 認證導致的問題,原因是因為 Shiro 是認證框架,認證不通過的話,返回的錯誤碼應該是 401 Unauthorized 類的異常,但是從 XXL-JOB 的日志顯示這明顯是通信錯誤,難道是某個相關的服務被關了?

帶着這個疑問我去查了下 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 也幾乎沒人用

file

我果斷的把客戶端的 xxl-job-core 升級到官方推薦的最新版,代碼如下:

<dependency>
	<groupId>com.xuxueli</groupId>
	<artifactId>xxl-job-core</artifactId>
	<version>2.0.0</version>
</dependency>

然后啟動項目,在 XXL-JOB 手動執行任務,查看端口情況,問題解決。。
更多技術咨詢,請關注公眾號,find me !
alt 微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM