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

来源:https://www.cnblogs.com/xiao2shiqi/archive/2019/10/30/11763932.html

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


事件起因

昨天有同事找我到,說他搭建的 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 微信公眾號


您的分享是我們最大的動力!

更多相關文章
  • 從今天開始,持續更新typescript入門教程系列.... 目前ts越來越火,主流的前端框架,好比 angular,vue 3 均是採用ts來編寫,所有很多公司的項目都是用 ts 來寫的,所有是時候認真學習 ts 了 ts來源於微軟公司,越是大的公司,越是大的項目,越是推薦使用ts來編碼,ts是j ...
  • 實例方法和便捷方法是指jQuery可以直接通過鏈接操作的方法,是通過調用$.event上的方法(上一節介紹的底層方法)來實現的,常用的如下: on(types,selector,data,fn,one) ;為匹配元素集合中的每個元素綁定一個或多個類型的事件監聽函數 types ;事件類型字元串,多個 ...
  • 數組 1.數組去重: 主要是使用的 new Set() 方法 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set 2.替換數組指定位置元素 (splice) ,當然 splice 可 ...
  • 場景 Ubuntu Server 16.04 LTS上怎樣安裝下載安裝Nginx並啟動: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102828075 在上面安裝完Nginx後,在 /usr/local/nginx/下有個co ...
  • 場景 Ubuntu Server 16.04 LTS上怎樣安裝下載安裝Nginx並啟動: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102828075 上面在安裝完Nginx後,來看看Nginx的常用的命令。 註: 博客: h ...
  • 場景 Ubuntu Server 16.04 LTS上怎樣安裝下載安裝Nginx並啟動: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102828075 在上面進行安裝Nginx前配置檢查時提示: checking for C ...
  • 場景 Linux-安裝 Ubuntu Server 16.04 X64(圖文教程詳細版): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/93790806 Nginx入門簡介和反向代理、負載均衡、動靜分離理解: https://b ...
  • 安裝RabbitMQ,可以選擇使用Docker或者在CentOS下安裝RabbitMQ。這裡就不介紹這些高大上的安裝,就介紹在本地安裝吧。 第一步、下載並安裝erlang 為什麼要先下載安裝erlang呢?因為RabbitMQ服務端代碼是使用併發式語言Erlang編寫的,安裝RabbitMQ的前提是 ...
一周排行
  • C#中的DefaultView方法 簡介: 首先可建立一個表,對錶進行填充若幹條數據,代碼如下: //創建Table1 DataTable dt = new DataTable(); //對Table1添加列名,並設置列值類型 DataTable dt1 = new DataTable();//創建 ...
  • 1、運行程式報錯: FailFast: Couldn't find a valid ICU package installed on the system. 解決方法: yum install icu -y 2、程式運行後,本地可以訪問,但其他機器無法訪問,需要開放埠 firewall-cmd - ...
  • 只是一個Demo,所用有很多功能也沒有添加進去如分頁,輸入驗證,頁面也沒有進行精心佈局。 整體先來幾張圖解 ...
  • Core提供二種開發模式:Core Pages和Core MVC,今天介紹的是Core MVC。 1、創建web MVC項目 新建service/h_r.baseservice類庫文件、data/h_r.efdata類庫文件、common/h_r.common類庫文件。 引入需要的CSS文件和JS文 ...
  • 學習網址:https://docs.microsoft.com/zh-cn/visualstudio/get-started/visual-studio-ide?view=vs-2019 示範 vs2019: 變數的重命名的重構,更改該變數命名的同時,引用該變數的地方也會更改,如果該變數有被反射用到 ...
  • 1、在data裡面新建個Entity文件用於存放表映射,設計資料庫,執行如下語句 Scaffold-DbContext -Force "server=.;user=sunyong;password=1qaz!QAZ;database=hr;" Microsoft.EntityFrameworkCor ...
  • 1、發送郵件類,百度一大堆,這裡用的也是直接百度拿過來的 public static bool get_send_email(email email, string Title, string Body) { MailMessage mailMsg = new MailMessage(); mail ...
  • 1、添加用戶列表控制器,用於用戶列表顯示,登錄,增刪改查,郵件發送,下載 public userlistController(MainDbContext _db, ILogger<operatorlog> _logger, IOptions<email> sendMail) { db = _db; ...
  • 1、用戶列表頁面 @{ Layout = Layout = null;}<table id="datalistuser" class="easyui-datagrid" url="/userlist/getuserlist" toolbar="#toolbaruser" rownumbers="tr ...
  • 1、引用包 Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.SqlServer Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation Microsoft.AspNetCo ...