Проблема подключения RabbitMQ C # при использовании имени пользователя и пароля - PullRequest
28 голосов
/ 14 февраля 2011

Я в недоумении, поэтому я обращаюсь к коллективным знаниям в надежде на чудо.

Я установил RabbitMQ на Linux-систему, используя настройки по умолчанию.

КогдаЯ использую этот код (и конфигурацию установки RabbitMQ по умолчанию), все работает хорошо.

var connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "192.168.0.12";
IConnection connection = connectionFactory.CreateConnection();

Но когда я добавляю пользователя в RabbitMQ и пытаюсь использовать следующий код (имя пользователя и пароль были изменены, чтобы защититьinnocent. :))

var connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "192.168.0.12";
connectionFactory.UserName = "user";
connectionFactory.Password = "password";
IConnection connection = connectionFactory.CreateConnection();

метод connectionFactory.CreateConnection() вызывает следующее исключение:

BrokerUnreachableException    
None of the specified endpoints were reachable

Проверка файла журнала RabbitMQ Я вижу, что он жалуется на учетные данные:

{amqp_error,access_refused,
"PLAIN login refused: user 'user' - invalid credentials",
'connection.start_ok'}}

Дело в том, что я уверен в имени пользователя и пароле, и я не могу из-за любви к кодированию найти решение этой проблемы где-либо.

Я, должно быть, упускаю что-то очевидное, но не могу понятьчто это такое.Буду благодарен за любые полезные советы.

Ответы [ 3 ]

32 голосов
/ 14 февраля 2011

Кажется, я нашел решение своей проблемы. Работает следующий код:

ConnectionFactory factory = new ConnectionFactory();
factory.UserName = "user";
factory.Password = "password";
factory.VirtualHost = "/";
factory.Protocol = Protocols.FromEnvironment();
factory.HostName = "192.168.0.12";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
IConnection conn = factory.CreateConnection();

Спасибо за то, что выслушали, и, возможно, это, по крайней мере, могло бы пригодиться кому-то еще. :)

5 голосов
/ 12 марта 2015

Здесь показано, как создать пользователя с именем agent с паролем agent, установить для него значение administrator и предоставить ему read и write доступ ко всем очередям в vhost /

* 1007.*
5 голосов
/ 16 апреля 2014

Принятый ответ не работает для меня (в Windows).

Мне пришлось установить инструменты управления:

rabbitmq-plugins enable rabbitmq_management

N.B. rabbitmq-plugins находится в C: \ Program Files (x86) \ RabbitMQ Server \ rabbitmq_server-3.3.1 \ sbin

Затем перезапустите службу RabbitMQ.

Затем я установил EasyNetQ в Visual Studio в диспетчере пакетов:

install-package easynetq

После установки я могу использовать веб-сайт администратора, расположенный по адресу:

http://localhost:15672

N.B. Имя пользователя и пароль по умолчанию: guest

Отсюда я выбрал вкладку «Администратор», и причина была ясно показана желтым цветом в верхней части экрана:

This user does not have permission to access any virtual hosts.
Use "Set Permission" below to grant permission to access virtual hosts. 

Чтобы устранить проблему, я просто нажал кнопку Установить разрешение на том же экране и вуаля

N.B. чтобы это работало, вам нужно добавить пользователя, используя rabbitmqctl add_user пароль пользователя или аналогичный (rabbitmqctl также находится в каталоге выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...