Ошибка соединения 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'}}
Дело в том, что я уверен в имени пользователя и пароле, и я не могу любить кодирование найти решение этого в любом месте.
Мне нужно пропустить что-то очевидное, но я не могу понять, что это такое.
Я был бы благодарен за любые полезные указатели.
Ответы
Ответ 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 ".*" ".*" ".*"