私はrabbitmqを使用して、作業しているエンタープライズアプリケーションのデータベース間のメッセージを処理しています。プロセスの一部として、サーバーのセットアップの自動化(スクリプトなど)の支援を試みています。このプロセスでは、コマンドプロンプトからの交換を宣言するためにrabbitmqadmin
を使用しようとしました。 CentOS 5.x
とCentOS 6.x
を実行している2つの異なるサーバーがあり、どちらも同じ問題が発生しています。
これまでのところ、管理者ユーザーを宣言し、そのパスワードを設定してから、そのタグを管理者タグに設定し、それが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ボックスでは、rabbitmqadmin
の代わりにpython26 rabbitmqadmin
を使用する必要がありますが、同じ結果が得られます。
最後のコマンドの結果は次のとおりです。
*** Access refused: /api/exchanges/vhostFoo/exchangeNew
CentOS 5.xボックスとCent 6.xボックスの両方でrabbitmq 3.3.5を実行しています。私が欠けているものについての考え、または何が問題なのかについての詳細情報を取得する方法についての考え(たとえば、エラーログファイルまたはより詳細な出力を取得する方法)?
私は自分の問題を理解し、誰かが同じ問題に遭遇した場合に備えて回答を投稿したいと思いました。/var/log/rabbitmq /をチェックアウトしたところ、最後のビットでvhostFooへのアクセスがユーザー「guest」で拒否されたことがわかりました。これに基づいて、私のパラメーターの順序が間違っていると思いました。私は以下を使用しましたが、うまくいきました:
rabbitmqadmin declare exchange --vhost=vhostFoo name=exchangeNew type=direct -u administrator -p password
システムのローカルで管理者権限を持つユーザーを追加できます。ブラウザに http:// localhost:15672 /#/ と入力します。その管理タブで、管理者権限を持つユーザーを作成できます。
コマンドに管理者ユーザーのユーザーとパスワード(-u administrator -p password)を追加すると、うまくいきました。