【问题标题】:EasyNetQ fails to publish to RabbitMQ - PersistentChannel timed outEasyNetQ 无法发布到 RabbitMQ - PersistentChannel 超时
【发布时间】:2014-05-17 22:03:50
【问题描述】:

我正在尝试使用 EasyNetQ 连接到 RabbitMQ。 RabbitMQ 在远程虚拟机上。

_rabbitBus = RabbitHutch.CreateBus(
    string.Format("host={0};virtualhost={1}", 
    _hostSettings.Host, _hostSettings.VHost),
     x => x.Register<IEasyNetQLogger>(l => _logger));

_rabbitBus.Subscribe<Message>(_topic, ReceiveMessage, m => m.WithTopic(_topic));

我得到一个 TimeoutException The operation requested on PersistentChannel timed out.。 远程 VM 正在回复 ping,端口 5672 和 15672 已打开(使用 nmap 检查)。 可以从我的主机访问 RabbitMQ 管理。

另外,如果 RabbitMQ 在我的本地机器上运行,它工作正常。 我试过从局域网中的其他电脑连接到我电脑上安装的 RabbitMQ,它也可以工作。

我得出一个假设,它与它位于虚拟机上的事实有关,并且可能存在连接问题。但同样,Rabbit 的网络管理工作正常。

还在 EasyNetQ 测试应用程序上进行了测试 - 可在本地主机上运行,​​但不能在远程上运行。

输出如下:

DEBUG: Trying to connect
ERROR: Failed to connect to Broker: '192.168.0.13', Port: 5672 VHost: '/'. 
       ExceptionMessage: 'None of the specified endpoints were reachable'
ERROR: Failed to connected to any Broker. Retrying in 5000 ms
  • EasyNetQ v0.28.4.242

【问题讨论】:

    标签: rabbitmq cqrs easynetq


    【解决方案1】:

    正如迈克建议的那样,我有这个,然后检查了权限。 "guest" 用户只能通过 localhost 连接(请参阅RabbitMQ Access Control。)尝试使用管理界面添加具有权限的用户,然后按如下方式连接

    var _bus = RabbitHutch.CreateBus(string.Format("host={0};virtualhost={1};username={2};password={3}", 
    _hostSettings.Host, _hostSettings.VHost, _hostSettings.UserName, _hostSettings.Password));
    

    【讨论】:

    • 谢谢,会尽快尝试
    • 这救了我,但由于该错误消息,我花了太多时间调查网络问题。谢谢。
    • 感谢您,我的连接字符串中有空格导致相同的错误消息!
    • 确实,该错误完全具有误导性。问题是带有空格的连接字符串。
    【解决方案2】:

    您是否检查过您的凭据。默认用户名和密码为“guest”和“guest”。错误消息不是很有帮助。如果还存在身份验证错误,您会得到“指定的端点均不可访问”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多