RabbitMQ 连接错误“指定的端点均不可到达”
Posted
技术标签:
【中文标题】RabbitMQ 连接错误“指定的端点均不可到达”【英文标题】:RabbitMQ Connection Error " None of the specified endpoints were reachable" 【发布时间】:2018-05-31 20:24:57 【问题描述】:我在服务器和我的系统上安装了 rabbitmq 服务。 我想使用 RPC 模式:
var factory = new ConnectionFactory()
HostName = "158.2.14.42",
Port = Protocols.DefaultProtocol.DefaultPort,
UserName = "Administrator",
Password = "@server@",
VirtualHost = "/"
ContinuationTimeout = new TimeSpan(10, 0, 0, 0)
;
connection = factory.CreateConnection();
我在创建与此消息的连接时出错: 指定的端点均不可到达
当我在服务器的 localhost 实例上使用它时,它可以工作,但是当我创建从本地到该服务器的连接时,它返回了错误。 它不适用于我本地计算机的本地 ip 和用户名和密码。
谁能帮帮我?
【问题讨论】:
RabbitMQ C# connection trouble when using a username and password的可能重复 @RazvanDumitru ,我喜欢这样,但仍然有错误。并且代码无法识别 FromEnvironment @RazvanDumitru 谢谢你,你的指导帮助了我。 【参考方案1】:谢谢大家。 像这样: https://***.com/questions/4987438/rabbitmq-c-sharp-connection-trouble-when-using-a-username-and-password 安装 RabbitMQ 后,我在服务器和本地计算机上启用了管理工具:
rabbitmq-plugins enable rabbitmq_management
然后我从services.msc
重启了RabbitMQ服务
我可以在http://localhost:15672
看到rabbitmq 管理
我使用 user:guest 和 pass:guest 登录到兔子管理
我添加了我最喜欢的具有管理员权限的用户通行证,所以它起作用了。
【讨论】:
【参考方案2】:我也遇到了同样的问题,后来意识到我必须打开两个端口,即 15672 和 5672。
以下命令适用于 docker 容器模型。
docker run -it --rm --name mymq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
代码sn-p:
var factory = new RabbitMQ.Client.ConnectionFactory
Uri = new Uri("amqp://guest:guest@localhost:5672/")
;
或
var factory = new ConnectionFactory() HostName = "localhost" ;
【讨论】:
【参考方案3】:这意味着客户端无法访问服务器158.2.14.42
和默认虚拟主机/
。
可能是防火墙配置
【讨论】:
我在服务器的widnows防火墙上添加了5672端口,但是没有解决。 有什么推荐的吗?有什么我必须这样做的解决方案吗?【参考方案4】:不要使用访客。创建自己的帐号和密码,并在http://localhost:15672/#/users 中确保“can access virtual hosts”为“/”
var factory = new ConnectionFactory()
HostName = "192.168.1.121",
Port = 5672,
UserName = "fancky",
Password = "123456"
;
【讨论】:
【参考方案5】:1) 打开 RabbitMQ 命令提示符
2) 将路径更改为安装 rabbitmq_server 的“C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sbin”。
3) 运行以下命令: rabbitmq-plugins 启用 rabbitmq_management
如果防火墙已阻止它,则弹出显示。为此允许防火墙。
现在您可以在浏览器中访问了。
【讨论】:
【参考方案6】:在我们的例子中,这是System.Threading.Tasks.Extensions
的程序集绑定失败,我们的异常记录器没有记录InnerException
Exception information:
Exception type: FileLoadException
Exception message: Could not load file or assembly 'System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
at RabbitMQ.Client.Framing.Impl.AutorecoveringConnection..ctor(ConnectionFactory factory, String clientProvidedName)
at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName) in /_/projects/RabbitMQ.Client/client/api/ConnectionFactory.cs:line 494
非常糟糕的误导性错误消息。
【讨论】:
【参考方案7】:默认情况下,如您所说,RabbitMQ 将侦听 5672
,但这可以更改,如果您查看您的配置(在 MQ 服务器上),您应该会找到一个部分:
rabbit.tcp_listeners
这将详细说明正在使用的端口。检查它是不是你认为的那样。
另外,您使用的是 IPv4 还是 IPv6?您可能需要额外的配置来支持两者。
读一读:
https://www.rabbitmq.com/networking.html
【讨论】:
默认情况下,RabbitMQ 将在所有可用接口上侦听端口 5672。在配置文件上,我必须改变什么吗?【参考方案8】:我一直遇到这个问题,最后只是将 URI 提供为小写,而机器的名称是大写的。
由于花了几个小时才弄明白,我认为这可能对其他人有所帮助。
【讨论】:
以上是关于RabbitMQ 连接错误“指定的端点均不可到达”的主要内容,如果未能解决你的问题,请参考以下文章
未处理的异常。 RabbitMQ.Client.Exceptions.BrokerUnreachableException:指定的端点均不可到达
如何解决 Spring-cloud-sleuth-zipkin (Edgware.SR5) 中的 RabbitMQ 服务器连接错误