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

事件原由

昨天有同事找我到,說他搭建的 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 也幾乎沒人用微信

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 微信公衆號搜索引擎

相關文章
相關標籤/搜索