RabbitMQ从终端申报交换 - 拒绝访问:/ api/exchange /

Jam*_*vec 20 rabbitmq rabbitmq-exchange rabbitmqctl rabbitmqadmin

我正在使用rabbitmq来处理我工作的企业应用程序的数据库之间的消息.作为流程的一部分,我正在尝试帮助自动化服务器的设置(例如脚本).在此过程中,我尝试使用rabbitmqadmin从命令提示符声明交换.我有2个不同的服务器在运行CentOS 5.x,CentOS 6.x并且两个都有相同的问题.

到目前为止,我宣布了一个管理员用户并设置了密码,然后我将其标记设置为管理员标记,然后我确保它具有对vhost的权限.之后,我尝试声明交换,指定用户和密码,它失败.

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
Run Code Online (Sandbox Code Playgroud)

对于CentOS 5.x盒子,我必须使用python26 rabbitmqadmin而不仅仅是rabbitmqadmin,但得到相同的结果.

最后一个命令导致:

*** Access refused: /api/exchanges/vhostFoo/exchangeNew
Run Code Online (Sandbox Code Playgroud)

我的CentOS 5.x和Cent 6.x盒子都在运行rabbitmq 3.3.5.关于我缺少什么的想法或者我如何获得有关错误的更多信息的想法(例如错误日志文件或获得更详细输出的方式)?

Jam*_*vec 32

我想出了我的问题,并想发布答案以防其他人遇到同样的问题.我检查了我的/ var/log/rabbitmq /,最后一点显示用户'guest'拒绝访问我的vhostFoo.基于此,它让我认为我的params命令是不正确的,它看起来就是这样.我使用以下内容并且工作正常:

rabbitmqadmin declare exchange --vhost=vhostFoo name=exchangeNew type=direct -u administrator -p password 
Run Code Online (Sandbox Code Playgroud)

  • 显然,rabbitmqadmin现在需要为我们选择执行的任何命令设置用户名和密码……这是一件好事! (2认同)

小智 5

将管理员用户的用户和密码(-uadministrator-ppassword)添加命令对我有用。