RabbitMQ:简单测试程序可能存在网络问题

时间:2012-06-08 21:04:34

标签: rabbitmq

我有一个简单的RabbitMQ测试程序,它向RabbitMQ服务器发送然后接收消息。我有两台计算机,我发现我的代码是否有效取决于哪台计算机托管RabbitMQ服务器。这是我的情况(原谅我的MS Paint):

enter image description here

  1. 如果计算机A托管服务器并运行代码,则从A发送消息到A,它可以正常工作。
  2. 如果计算机A托管服务器并且我的代码在计算机B上运行,则从B向A发送消息,它可以正常工作。
  3. 如果计算机B托管服务器并且我的代码在计算机A上运行,从A发送消息到B,我得到一个异常,说“没有指定的端点可以访问”。
  4. 如果计算机B托管服务器并运行代码,则从B发送消息到B,它可以正常工作。
  5. 我无法弄清楚为什么情景#3对我不起作用。

    • 我不认为这是代码,因为我的三个场景完全按照我的预期工作。
    • 我认为这不是防火墙问题,因为我在两台计算机上关闭了防火墙后运行了这些测试。
    • 我不认为这是计算机B上RabbitMQ服务器的问题,因为它能够很好地与自身通信(方案#4)。
    • 我在尝试方案#3后检查了计算机B上的RabbitMQ日志文件,但是我没有看到任何关于尝试连接的内容。我认为计算机A在发送请求时根本无法看到计算机B.

    我的问题,非常普遍的是,我应该寻找哪些可能指向我问题的东西?必须在计算机A上检查某些设置但未在计算机B上检查。计算机B具有Erlang和RabbitMQ的默认安装。我很确定计算机A也设置为默认值(我最近没有安装它)。

    请帮忙。

1 个答案:

答案 0 :(得分:2)

只有在A尝试连接到B时才会出现问题,所以:

  • 检查A是否可以将B的主机名解析为IP地址。请使用nslookup b
  • 检查A是否可以达到B.运行ping b对此有帮助。
  • 使用telnet从A连接到B的RabbitMQ端口(可能是5672):telnet b 5672。如果您出现空白屏幕,则表示已接受连接。我打赌你会遇到某种错误。首先使用b的IP地址尝试这个技巧然后如果可行的话尝试使用b的主机名来确保它解析。

总之,只需将其剥离为纯网络检查(不涉及RabbitMQ)并从那里开始工作。