【RabbitMq】本地環回地址能連RabbitMq,遠程無法連接的問題之解決方案


正文稍長,心急的網友請下拉至紅字處。

本人原有一台T440p,在上面安裝了Windows版RabbitMq,又在SpringBoot程序里配置了隊列的收發消息程序,均運轉正常。

昨天購置了一台T14,把SpringBoot程序拷貝過去,在application.properties文件里將環回地址127.0.0.1修改成了T440p的ip地址192.168.0.105,啟動程序,發現無法收到RabbitMq的隊列中的消息。程序是這樣提示我的:

Attempting to connect to: [192.168.0.105:5672]
Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection timed out: no further information
Restarting Consumer@43fa7e0a: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0

是連接超時Time out不是拒絕服務Refused,這還和網絡大多數同類問題報錯不一樣。

按我平時解決問題的習慣,一搜索網絡二翻書,結果網絡上大多都是說guest用戶不能遠程連,需要換新用戶,我換了問題依舊,還有建議修改config文件的,也是無效,翻書就更氣人,三四本講到SpringBoot連RabbitMq的所謂暢銷書,里面的例子全都是用127.0.0.1的,沒有一個用的是真實IP!也就是說我踩的坑,他們根本沒碰過!他們給人寫書用的例子都是環回地址,等於照官方教程單機本地玩一遍,覺得都通順了問題不大就有膽子去寫書了,可見有多敷衍!

我又試了試從T14上訪問T440p上的Tomcat服務,網頁都能正常運作,這下我蒙圈了。這時已到中午,於是關了電腦去辦事。

下午去復查結石,回來一覺睡到十點,醒來后想:如果RabbitMQ這樣的消息中間件,如果遠程訪問需要特殊設置的話,那網絡及書籍早就把這個當秘笈傳頌了,而且如果真是這樣,那就是RabbitMQ的大bug,嚴重影響用戶的上手舒適性。我自己寫小軟件都會考慮盡量不讓用戶進行復雜配置,可況RabbitMQ這樣成名的大軟件!

因此,可以確定的是,RabbitMq沒有問題,只要新建了用戶賦予了權限就能從遠端訪問,出問題的在Windows。

我會想到原來在Linux裝MySql和Tomcat時,都要修改iptables去開放端口,Win10里應該有相應設置處,於是我找到了這個:

1.WIN+X調出系統配置菜單,選擇控制面板; 2.選擇網絡和internet,拉到底下,選擇windows 防火牆; 3.點擊左側的“高級設置”選項; 4.設置入站規則(入站規則:別人電腦訪問自己電腦;出站規則:自己電腦訪問別人電腦),點擊“新建規則”,點選“端口”,單擊 “下一步”; 5.選擇相應的協議,如添加5672端口,我們選擇TCP,在我寫本地端口處輸入5672;

然后我把端口改成了RabbitMQ的5672,

在設置完確認的那一瞬間,T14上處於輪詢狀態的消息消費者立即做出了響應: 

Attempting to connect to: [192.168.0.105:5672]
Created new connection: rabbitConnectionFactory#4de10b75:11/SimpleConnection@50f0c144 [delegate=amqp://heyang@192.168.0.105:5672/, localPort= 50580]

 看到Create new connection我欣喜異常,看來開放端口立竿見影了。

然后我試着在T440p上發了兩條消息,遠端T14監聽的消費者真的收到了:

 

至此問題解決,解決的關鍵是到Win10的防火牆端口里開放5672的入站規則!RabbitMq里只要增加用戶賦予權限(https://www.cnblogs.com/heyang78/p/15245999.html供參考,也可通過界面完成)即可。

回想當時在網絡搜索時,有些文章都提到過關閉防火牆開放端口之類的話,我試了前者無效,繞一圈又回到后者上來了,看來以后在Win10上裝中間件少不了要去防火牆高級設置里去開放端口,這招和Linux里的iptables一樣常用!

-END-


免責聲明!

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



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