RabbitMQ объявляет Exchange из терминала - доступ запрещен: /api/exchanges/

Я использую rabbitmq для обработки сообщений между базами данных для корпоративного приложения, над которым я работаю. В рамках этого процесса я пытаюсь помочь автоматизировать настройку серверов (например, написать сценарий). В этом процессе я пытался использовать rabbitmqadmin для объявления обменов из командной строки. У меня есть 2 разных сервера, на которых работают CentOS 5.x и CentOS 6.x, и у обоих одна и та же проблема.

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

rabbitmqctl add_user administrator password
rabbitmqctl set_user_tags administrator administrator
rabbitmqctl set_permissions -p / administrator ".*" ".*" ".*"
rabbitmqctl add_vhost vhostFoo
rabbitmqctl set_permissions -p vhostFoo administrator ".*" ".*" ".*"
rabbitmqadmin -u administrator -p password declare exchange --vhost=vhostFoo name=exchangeNew type=direct

Для коробки CentOS 5.x я должен использовать python26 rabbitmqadmin вместо rabbitmqadmin, но получаю тот же результат.

Последняя команда приводит к:

*** Access refused: /api/exchanges/vhostFoo/exchangeNew

На моих коробках CentOS 5.x и Cent 6.x работает rabbitmq 3.3.5. Любые мысли о том, что мне не хватает, или мысли о том, как я могу получить больше информации о том, что не так (например, файл журнала ошибок или способ получить более подробный вывод)?


person James Oravec    schedule 01.10.2014    source источник


Ответы (3)


Я понял свою проблему и хотел опубликовать ответ на случай, если кто-то еще столкнется с той же проблемой. Я проверил свой /var/log/rabbitmq/, и последний бит показал, что доступ к моему vhostFoo был отклонен для пользователя «гость». Основываясь на этом, я подумал, что мой порядок параметров был неправильным, что, похоже, так и есть. Я использовал следующее, и это сработало нормально:

rabbitmqadmin declare exchange --vhost=vhostFoo name=exchangeNew type=direct -u administrator -p password 
person James Oravec    schedule 01.10.2014
comment
По-видимому, rabbitmqadmin теперь нуждается в имени пользователя и пароле, установленных для любой команды, которую мы выбираем для выполнения... и это хорошо! - person kstratis; 15.05.2015

Вы можете добавить пользователя с правами администратора локально в вашей системе. Введите в браузере http://localhost:15672/#/. На этой вкладке «Администратор» вы можете создать пользователя с правами администратора.

person Anitha Ponraj    schedule 05.06.2017

У меня сработало добавление пользователя и пароля (-u administrator -p password) пользователя-администратора в команду.

person Oleg    schedule 23.03.2020