一次奇怪的RabbitMQ超時異常


事情起源於一次本地安裝和配置RabbitMQ,代碼之前是OK的,只是把RabbitMQ服務器的IP網段調整到和開發機器不同的網段后(備注,有設置兩者互通,並且防火牆也是通的);

但是當做完RabbitMQ服務器的網段后,開發機器的代碼就訪問RabbitMQ,就報錯connection error or timeout。

 

1. 環境介紹

RabbitMQ 服務器:192.168.13.21

開發機器:192.168.3.6

兩者網絡是聯通的,並且RabbitMQ服務器的防火牆是允許客戶端IP訪問端口5672( amqp)和15672(http web)

cmd >> ping 192.168.13.21

 

 

cmd >> telnet 192.168.13.21 5672

 

 

 

2. old 代碼,原有的timeout,分別設置如下

啟動程序報錯,如下:

 

 

 

3. new 代碼,修改的timeout,分別設置如下:同時必須增加setHandshakeTimeout參數

 

 

 連接和執行成功,如下:

 

 

 

4.解決辦法:

最后,發現根本原因,可能是本地開發機器和RabbitMQ服務器之間,不同網段的地址或IP解析產生過多耗時。

原因:本地開發機器的網卡設置,我是通過增加一個IP="192.168.13.6",來實現本地開發機器和“RabbitMQ服務器”之間不同網段的互相通訊。

 

 

 

 

step 1: 修改RabbitMQ服務器的host文件,告訴RabbbitMQ服務器,他自己的IP和HOSTNAME

root >> vi /etc/host

# 增加如下參數

 

 

 

然后,重啟一下RabbitMQ

root >> systemctl restart rabbitmq-server

 

 

 

step 2: 重新在開發機器上,測試之前的old代碼

# 測試之前的old代碼,timeout設置還是60ms,沒有添加參數setHandshakeTimeout。

# 但是,這次連接和發送RabbitMQ成功

 


免責聲明!

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



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