web-dev-qa-db-ja.com

RabbitMQ-サーバー接続の許可

私はDjango CeleryワーカーをRabbitMQサーバーに接続し、すべて同じホスト上で実行するようにしています。

ただし、manage.py celery workerを実行すると、次のようになります。

[2013-06-11 17:33:41,185: WARNING/MainProcess] celery@localhost has started.
[2013-06-11 17:33:44,192: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 2 seconds...
[2013-06-11 17:33:50,203: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 4 seconds...
[2013-06-11 17:34:03,214: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 6 seconds...
[2013-06-11 17:34:27,232: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 8 seconds...

/var/log/rabbitmq/[email protected]を検査すると、次のようなメッセージが表示されます。

=ERROR REPORT==== 11-Jun-2013::17:33:44 ===
exception on TCP connection <0.201.0> from 127.0.0.1:43461
{channel0_error,opening,
                {amqp_error,access_refused,
                            "access to vhost 'myapp' refused for user 'guest'",
                            'connection.open'}}

私はUbuntu 12.04のリポジトリの標準パッケージを使用していますが、デフォルト設定とDjango-celery設定は次のようになります。

BROKER_Host = "localhost"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "myapp"

RabbitMQが接続を拒否するのはなぜですか?

19
Cerin

「guest」ユーザーに「/ myapp」vhostへのアクセスを許可する必要があるようです。

ドキュメントから

set_permissions [-p vhostpath] {user} {conf} {write} {read}

したがって、これに類似したものは、ゲストユーザーに無制限のアクセスを提供します。

rabbitmqctl set_permissions -p /myvhost guest ".*" ".*" ".*"
48
Scott Woodall