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

我果斷的把客戶端的 xxl-job-core 升級到官方推薦的最新版,代碼如下:
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.0</version>
</dependency>
然后啟動專案,在 XXL-JOB 手動執行任務,查看埠情況,問題解決,,
更多技術咨詢,請關注公眾號,find me !

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/42086.html
標籤:架構設計
上一篇:訊息佇列MQ簡介
下一篇:RabbitMQ安裝
