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:指定的端点均不可到达

连接时Rabbitmq通道错误

连接rabbitmq,芹菜和django时出现通道错误

如何解决 Spring-cloud-sleuth-zipkin (Edgware.SR5) 中的 RabbitMQ 服务器连接错误

Rabbitmq 空闲连接断开

尝试运行 Rabbitmq 时连接被拒绝