Проблема подключения RabbitMQ C# при использовании имени пользователя и пароля
Я здесь в растерянности, поэтому я обращаюсь к коллективному знанию в надежде на чудо.
Я установил RabbitMQ на Linux box, используя значения по умолчанию.
Когда я использую этот код (и конфигурацию установки 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'}}
Дело в том, что я уверен в имени пользователя и пароле, и я не могу из любви к кодированию найти решение этой проблемы где-либо.
Должно быть, я упускаю что-то очевидное, но не могу понять, что именно.
Я был бы благодарен за любые полезные советы.
3 ответов:
Кажется, что я нашел решение моей собственной проблемы. Работает следующий код:
Спасибо, что выслушали, и, возможно, это, по крайней мере, может быть полезно кому-то еще. :)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();
Принятый ответ не сработал для меня (на Windows).
Мне пришлось установить инструменты управления:
rabbitmq-plugins enable rabbitmq_managementБ. Н. в RabbitMQ-плагинов в файлах C:\Program (х86)\в RabbitMQ сервер\rabbitmq_server-3.3.1\переключатель
Затем перезапустите службу RabbitMQ.
Затем я установил EasyNetQ в Visual Studio в диспетчере пакетов:
install-package easynetqС этим установленным, я мог бы использовать веб-сайт администратора, расположенный по адресу:
http://localhost:15672N. B. имя пользователя и пароль по умолчанию это: гость
Отсюда я выбрал вкладку Admin, и причина была четко отображена желтым цветом в верхней части экрана:
This user does not have permission to access any virtual hosts. Use "Set Permission" below to grant permission to access virtual hosts.Чтобы исправить проблему, я просто нажал кнопку Set permission на том же экране et voila
N. B. Чтобы это сработало, вам нужно добавить пользователя, используя rabbitmqctl add_user username password или аналогичный (rabbitmqctl также находится в каталоге выше).
Вот как создать пользователя с именем
agentс паролемagent, установить его какadministratorи дать емуreadиwriteдоступ ко всем очередям в vhost /rabbitmqctl add_user agent agent rabbitmqctl set_user_tags agent administrator rabbitmqctl set_permissions -p / agent ".*" ".*" ".*"
Comments