RabbitMQ连接错误“没有指定的端点可以访问”

时间:2017-12-18 13:18:34

标签: c# asp.net rabbitmq

我在服务器和系统上安装了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和用户名和密码。


任何人都可以帮助我吗?

8 个答案:

答案 0 :(得分:6)

谢谢大家。 这样:
RabbitMQ C# connection trouble when using a username and password
安装RabbitMQ后,我在服务器和本地计算机上启用了管理工具:

rabbitmq-plugins enable rabbitmq_management

然后我从services.msc重启了RabbitMQ服务 我可以在http://localhost:15672看到rabbitmq管理
我使用用户登录了兔子管理:来宾和传递:来宾
我添加了我最喜欢的用户通行证,具有管理员权限,所以它有效。

答案 1 :(得分:1)

这意味着客户端无法访问服务器158.2.14.42和默认虚拟主机/

可能是防火墙配置

答案 2 :(得分:1)

在我们的例子中,它是 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

非常糟糕的误导性错误消息。

答案 3 :(得分:0)

默认情况下,正如你所说RabbitMQ会监听5672但是这可以改变,如果你看一下你的配置(在MQ服务器上),你应该找到一个部分:

rabbit.tcp_listeners

将详细说明正在使用的端口。检查一下你的想法。

另外,您使用的是IPv4还是IPv6?您可能需要额外的配置来支持这两种配置。

读一读:

https://www.rabbitmq.com/networking.html

答案 4 :(得分:0)

不要使用客人。创建您自己的帐户和密码,在http://localhost:15672/#/users中,确保“可以访问虚拟主机”为“/”

var factory = new ConnectionFactory() { 
  HostName = "192.168.1.121",
  Port = 5672,
  UserName = "fancky", 
  Password = "123456" 
};

答案 5 :(得分:0)

1)打开RabbitMQ命令提示符

2)将路径更改为安装了Rabbitmq_server的“ C:\ Program Files \ RabbitMQ Server \ rabbitmq_server-3.6.10 \ sbin”。

3)运行以下逗号: rabbitmq-plugins启用rabbitmq_management

如果防火墙阻止了它,则弹出显示。为此允许防火墙。

现在您可以在浏览器中访问了。

答案 6 :(得分:0)

我一直在遇到这个问题,最终它只是将URI提供为小写字母,而将机器名称为大写字母。

花了几个小时才弄清楚,我认为这可能会对其他人有所帮助。

答案 7 :(得分:0)

我也遇到了同样的问题,后来意识到我必须同时打开两个端口,即 15672 和 5672。

以下命令在 docker 容器模型中适用于我。

docker run -it --rm --name mymq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

代码片段:

 var factory = new RabbitMQ.Client.ConnectionFactory
            {
                Uri = new Uri("amqp://guest:guest@localhost:5672/")
            };

var factory = new ConnectionFactory() { HostName = "localhost" };