Подтвердить что ты не робот

Ошибка соединения RabbitMQ С# при использовании имени пользователя и пароля

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

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

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

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

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

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'}}

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

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

4b9b3361

Ответ 1

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

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();

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

Ответ 2

Принятый ответ не работал у меня (в 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. 

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

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

Ответ 3

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

rabbitmqctl add_user agent agent
rabbitmqctl set_user_tags agent administrator
rabbitmqctl set_permissions -p / agent ".*" ".*" ".*"