RabbitMQ本地正常,發布到服務器上 出行連接失敗


本地允許正常,發布到服務器上遇到如下異常:

RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable --->
 System.IO.IOException: connection.start was never received, likely due to a network timeout<br/>   
在 RabbitMQ.Client.Framing.Impl.Connection.StartAndTune()<br/>   在 RabbitMQ.Client.Framing.Impl.Connection.Open(Boolean insist)<br/>  
 在 RabbitMQ.Client.Framing.Impl.Connection..ctor(IConnectionFactory factory, Boolean insist, IFrameHandler frameHandler, String clientProvidedName)<br/>   
在 RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(IFrameHandler fh)<br/>  
 在 RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(IEndpointResolver endpoints)<br/>   
在 RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)<br/>  
 --- 內部異常堆棧跟蹤的結尾 ---<br/>
   在 RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)<br/>   
在 RabbitMQ.Client.ConnectionFactory.CreateConnection(String clientProvidedName)<br/>  

 

 折騰了一天,最終把 web項目中 用Nuget 也安裝引用下  “RabbitMQ.Client” ,重新發布即可。

 

再次踩坑,又一Web項目雖然在Nuget上已經重新安裝引用了 “RabbitMQ.Client” 但發布到服務器上在發布RabbitMq任務時還是報以上錯誤,同樣的本地運行時一切正常。

最終通過一個個對比,發現“RabbitMQ.Client”程序集依賴的一個程序集“System.Buffers”和運行正常的項目中的dll文件大小、日期。版本有區別,最終在Nuget上卸載干凈“RabbitMQ.Client”程序集以及其依賴的兩個程序集“System.Buffers”和“System.Memory”,然后再重新安裝“RabbitMQ.Client” 發布到服務器上結果一切運行正常啦!

 

 

 

總結:

都是 “RabbitMQ.Client”以及其依賴項“System.Buffers”和“System.Memory” 版本 埋的坑  

后面在新的項目上,引用“RabbitMQ.Client”時 務必將其依賴項卸載干凈,然后用Nuget一次性重新安裝。

 


免責聲明!

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



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