EasyNetQ не удается опубликовать в RabbitMQ - Стойкость PersistentChannel

Я пытаюсь подключиться к RabbitMQ с помощью EasyNetQ. 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.. Удаленная виртуальная машина отвечает на пинги, порты 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

Ответ 1

Как Майк предположил, что у меня есть это, а затем проверил разрешения. "Гость" может подключаться только через 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

Вы проверили свои учетные данные. Имя пользователя и пароль по умолчанию - "гость" и "гость". Сообщение об ошибке не очень полезно. Вы получаете "Ни один из указанных конечных точек не был доступен", если также была ошибка проверки подлинности