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一次性重新安装。

 

posted @ 2020-07-15 01:40  谷樵  阅读(4731)  评论(2编辑  收藏  举报