4

Amazon EC2 インスタンスおよびローカルで RabbitMQ に同様の質問が寄せられてい ますか? デスクトップから ec2のrabbitmqに接続 できませんが、異なるエラーメッセージが表示されます。

正しくセットアップされた Linux EC2 インスタンスで実行されている RabbitMQ サーバーがあります。カスタム ユーザーを作成し、キューへの読み取り/書き込みのアクセス許可を付与しました。ローカル クライアントを使用すると、メッセージを正しく受信できます。ポート (5672/25672) が開いていて、それらのポートに telnet で接続できるように、EC2 にセキュリティ グループを設定しました。また、次のように rabbitmq.conf を設定しました。

[
    {rabbit, [
            {tcp_listeners, [{"0.0.0.0",5672}]},
            {loopback_users, []},
            {log_levels, [{connection, info}]}
            ]
    }
].

現時点では、サーバー上にクライアントがキューに公開されています。

同じキューからデータを消費する必要がある EC2 の外部のサーバーで別のクライアントを実行しています (消費は多くのプロット/グラフィック操作を行うため、EC2 で両方を実行することはできません)。

ただし、テストコードを使用して外部クライアントから接続しようとすると

try {
    ConnectionFactory factory = new ConnectionFactory();
    factory.setUri("amqp://****:****@****:5672/");
    connection = factory.newConnection();
} catch (IOException e) {
    e.printStackTrace();

}

次のエラーが表示されます。

com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - 認証メカニズム PLAIN を使用してログインが拒否されました。詳細については、ブローカーのログファイルを参照してください。

ただし、接続しようとしたことがないかのように、ブローカーのログファイルには何もありません。ファクトリの個々のゲッター/セッター メソッドを使用して接続しようとしましたが、別のポートを使用してみました (それらを開くと共に)。

SSL を使用する必要があるのか​​、EC2 に接続しないのか疑問に思っていましたが、Web を読んでみると、うまくいくはずですが、よくわかりません。私がやろうとしていることを成功させ、それを文書化している人々の例を見つけることができません。

前もって感謝します

4

1 に答える 1

5

答えは、SSH 接続に使用するのと同じ IP をホストに指定する必要があるという単純なものでした。同じマシンを指していると思われる EC2 インスタンスのインスタンスの Elastic IP/public dns を使用しようとしていました。

SSL 接続のセットアップなど、多くのことを試しましたが、必要ありませんでした。

必要なのは次のとおりです。

  1. rabbitmqctrl を使用して rabbitmq ユーザーを作成し、適切な権限を付与します
  2. セキュリティ グループ メニューから EC2 で必要なポートを開きます (デフォルトは 5672 です)。
  3. クライアント ライブラリを使用して、ホスト名が通常 SSH 接続するマシンと同じ正しいホスト名/ユーザー名/パスワード/ポートに接続します。
于 2014-12-16T09:56:52.330 に答える