【问题标题】:RabbitMQ Connection Error " None of the specified endpoints were reachable"RabbitMQ 连接错误“指定的端点均不可到达”
【发布时间】: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 和用户名和密码。


谁能帮帮我?

【问题讨论】:

标签: c# asp.net rabbitmq


【解决方案1】:

谢谢大家。 像这样:
https://stackoverflow.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 提供为小写,而机器的名称是大写的。

            由于花了几个小时才弄明白,我认为这可能对其他人有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-04-09
              • 2015-12-02
              • 1970-01-01
              • 2019-05-17
              • 2020-11-25
              • 2015-10-04
              • 1970-01-01
              • 2020-07-20
              相关资源
              最近更新 更多