【问题标题】:Unable to connect to RabbitMQ on server无法连接到服务器上的 RabbitMQ
【发布时间】:2016-03-11 08:21:08
【问题描述】:

我有以下代码在我的本地机器上连接到 RabbitMQ,但是当我将主机名从 localhost 更改为我的服务器名时,它失败并返回错误

var factory = new ConnectionFactory();
factory.UserName = "myuser";
factory.Password = "mypassword";
factory.VirtualHost = "/";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
factory.HostName = "localhost";

只要我如下更改主机名,它就会返回错误

factory.HostName = "myserver";

例外:指定的端点均不可到达

AMQP 操作被中断:AMQP 关闭原因,由 库,代码=0,文本=\“流结束\”,classId=0,methodId=0, 原因 = System.IO.EndOfStreamException:对等体错过了 2 次心跳 心跳超时设置为 60 秒

【问题讨论】:

  • 你能ping通服务器吗? RabbitMQ 服务器是否在该服务器上运行?您可以使用(例如)telnet 连接到 RabbitMQ 端口吗?你在防火墙上打了一个洞吗?服务器上的 RabbitMQ 日志中是否有任何内容?
  • 我可以 ping 并远程登录到服务器;如何检查 RabbigMQ 日志?我几乎是这方面的初学者;谢谢
  • 我看到了管理员的日志,发现 VirtualHost 是 /filestream insetad of /

标签: c# rabbitmq


【解决方案1】:

与其以这种方式连接,不如使用连接字符串连接起来更容易,就像使用 sql 一样。

示例 C#:

var factory = new ConnectionFactory
{
    Uri = ConfigurationManager.ConnectionStrings["RabbitMQ"].ConnectionString,
    RequestedHeartbeat = 15,
    //every N seconds the server will send a heartbeat.  If the connection does not receive a heartbeat within
    //N*2 then the connection is considered dead.
    //suggested from http://public.hudl.com/bits/archives/2013/11/11/c-rabbitmq-happy-servers/
    AutomaticRecoveryEnabled = true
};
return factory.CreateConnection();

web.config 或 app.config

  <connectionStrings>
    <add name="RabbitMQ" connectionString="amqp://{username}:{password}@{servername}/{vhost}" />
  </connectionStrings>

【讨论】:

  • 我不知道这个;感谢您让我们知道;很有用
【解决方案2】:

在服务器上,主机名似乎配置不同。我的管理员查看了日志并查看了配置,并为我提供了服务器上的主机名。

var factory = new ConnectionFactory();
factory.UserName = "myuser";
factory.Password = "mypassword";
factory.VirtualHost = "/filestream";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
factory.HostName = "myserver";

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多