3

RabbitMQ サーバーにメッセージを送信してから受信する単純な RabbitMQ テスト プログラムがあります。私は 2 台のコンピューターを持っていますが、コードが機能するかどうかは、RabbitMQ サーバーをホストするコンピューターによって異なることがわかりました。これが私の状況です(私のMSペイントを許してください):

ここに画像の説明を入力

  1. コンピューター A がサーバーをホストし、コードを実行して、A から A にメッセージを送信すると、動作します。
  2. コンピューター A がサーバーをホストし、私のコードがコンピューター B で実行され、B から A にメッセージを送信すると、機能します。
  3. コンピューター B がサーバーをホストし、私のコードがコンピューター A で実行され、A から B にメッセージを送信すると、「指定されたエンドポイントのいずれにも到達できませんでした」という例外が発生します。
  4. コンピューター B がサーバーをホストし、コードを実行して、B から B にメッセージを送信すると、動作します。

シナリオ 3 がうまくいかない理由がわかりません。

  • 私のシナリオの 3 つは期待どおりに動作するため、コードではないと思います。
  • 両方のコンピューターでファイアウォールをオフにしてこれらのテストを実行したため、ファイアウォールの問題ではないと思います。
  • コンピューター B の RabbitMQ サーバーは問題なく通信できるため、問題ではないと思います (シナリオ #4)。
  • シナリオ 3 を試した後、コンピューター B の RabbitMQ ログ ファイルを確認しましたが、試行された接続について何かを示すものは何も表示されません。リクエストを送信するときに、コンピューター A がコンピューター B を認識できないだけだと思います。

私の質問は、非常に一般的ですが、私の問題を指摘する可能性のあるものを探す必要があるのは何ですか? コンピューター A ではチェックされているが、コンピューター B ではチェックされていない設定が必要です。コンピューター B には、Erlang と RabbitMQ がデフォルトでインストールされています。コンピューター A もデフォルトに設定されていると確信しています (最近はインストールしていません)。

助けてください。

4

1 に答える 1

2

この問題は、A が B に接続しようとしたときにのみ明らかになるため、次のようになります。

  • A が B のホスト名を IP アドレスに解決できることを確認します。これに使用nslookup bします。
  • A が B に到達できることを確認します。これには実行ping bが役立ちます。
  • telnet を使用して、A から B の RabbitMQ ポート (おそらく 5672) に接続しますtelnet b 5672。空白の画面が表示された場合は、接続が受け入れられたことを意味します。ただし、何らかのエラーが発生するに違いありません。最初に b の IP アドレスを使用してこのトリックを試し、それが機能する場合は、b のホスト名で試して解決することを確認します。

要約すると、純粋なネットワーク チェック (RabbitMQ は関係ありません) にそれを取り除き、そこから作業するだけです。

于 2012-06-12T03:48:57.680 に答える