EasyNetQ无法发布到RabbitMQ - PersistentChannel超时

时间:2014-04-05 14:43:39

标签: rabbitmq cqrs easynetq

我正在尝试使用EasyNetQ连接RabbitMQ。 RabbitMQ在远程VM上。

_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 Test应用程序上进行了测试 - 适用于localhost,但不适用于远程。

输出如下:

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

2 个答案:

答案 0 :(得分:16)

正如迈克建议我有这个,然后检查权限。 &#34;旅客&#34;用户只能通过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));

答案 1 :(得分:8)

您是否检查了凭据?默认用户名和密码是&#39;来宾&#39;和&#39;客人&#39;。错误消息不是很有帮助。您得到的“指定的端点都不可访问”#39;如果还有身份验证错误