web-dev-qa-db-ja.com

ユーザー名とパスワードを使用する場合のRabbitMQ C#接続の問題

私はここで途方に暮れているので、奇跡を期待して集合的知識に手を差し伸べています。

デフォルトを使用してLinuxボックスにRabbitMQをインストールしました。

このコード(およびデフォルトの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'}}
_

問題は、ユーザー名とパスワードに自信があり、コーディングが大好きなため、これに対する解決策をどこにも見つけられないことです。

私は明白な何かを見逃しているに違いありませんが、それが何であるのか理解できません。役に立つポインタがあれば感謝します。

29
user181261

自分の問題の解決策を見つけたようです。次のコードは機能します。

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();

聞いてくれてありがとう、おそらくこれは少なくとも他の誰かにとって役立つかもしれません。 :)

32
user181261

パスワードagentagentというユーザーを作成し、administratorに設定して、readwriteにアクセスを許可する方法を次に示します。仮想ホスト内のすべてのキューへ/

rabbitmqctl add_user agent agent
rabbitmqctl set_user_tags agent administrator
rabbitmqctl set_permissions -p / agent ".*" ".*" ".*"
5
Mihail Shishkov

受け入れられた答えは私(Windows)では機能しませんでした。

管理ツールをインストールする必要がありました。

rabbitmq-plugins enable rabbitmq_management

N.B。 rabbitmq-pluginsはC:\ Program Files(x86)\ RabbitMQ Server\rabbitmq_server-3.3.1\sbinにあります

次に、RabbitMQサービスを再起動します。

次に、パッケージマネージャーのVisual StudioにEasyNetQをインストールしました。

install-package easynetq

これをインストールすると、次の場所にある管理Webサイトを使用できます。

http://localhost:15672

N.B.デフォルトのユーザー名とパスワードは次のとおりです。

ここから、[管理]タブを選択すると、原因が画面上部に黄色で明確に表示されていました。

This user does not have permission to access any virtual hosts.
Use "Set Permission" below to grant permission to access virtual hosts. 

この問題を修正するには、同じ画面でSet permissionボタンを押しただけです。

N.B.これが機能するためには、rabbitmqctl add_user username passwordまたは同様のものを使用してユーザーを追加する必要があります(rabbitmqctlも上のディレクトリにあります)。

5
Robbie Dee