无法在两台PC上建立连接(Windows,RabbitMQ)

时间:2016-05-01 12:13:38

标签: java rabbitmq port message-queue firewall

我正在尝试在两台本地PC( Windows操作系统)之间发送消息。我已经使用LAN连接连接到这些PC。 RabbitMQ服务器安装在 10.100.94.25 PC上。我正在尝试从 10.100.94.28 PC创建连接。我使用Windows命令提示符从客户端PC(10.100.94.28) ping我的 rabbit MQ server PC(10.100.94.25)。它很成功。但是,当我尝试从代码创建连接时,它无法正常工作。请检查我的代码和错误日志。错误告诉我“超时错误”。我该怎么办?

我已成功发送并收到来自同一台PC的消息。这意味着,当我使用localhost作为主机时,它可以完美地运行。那么我在这里远程访问的微小触摸是什么?

connectionFactory = new ConnectionFactory();
connectionFactory.setUsername("shoshi");
connectionFactory.setPassword("shoshi");
connectionFactory.setHost("10.100.94.25");
connectionFactory.setPort(5672);
connection = connectionFactory.newConnection(); // this is 451 number line

错误:

May 01, 2016 6:00:35 PM com.chat.UI initRabbitMQ
SEVERE: null
java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:714)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:760)
    at com.chat.UI.initRabbitMQ(UI.java:451)
    at com.chat.UI.<init>(UI.java:48)
    at com.chat.UI$8.run(UI.java:405)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

3 个答案:

答案 0 :(得分:2)

我猜测5672端口是否打开。或者防火墙是否阻止它。感谢cantSleepNowThomas的指示。

那么,我做了什么?我只是使用telnet检查端口号。命令是telnet IP_ADDRESS PORT_NUMBER。如果telnet未被识别为命令,则必须启用它。按照下面的说明进行操作:

要安装Telnet,请按照以下说明操作:

  1. 单击“开始”,然后选择“控制面板”。
  2. 选择程序和功能。
  3. 选择打开或关闭Windows功能。
  4. 选择Telnet客户端选项。
  5. 单击“确定”。
  6. 或,follow this link

    我可以使用telnet localhost 5672命令获得响应。但不是telnet 10.100.94.25 5672命令。

    另外,从THIS POST我得到了:

    • connection refused表示该端口上没有任何内容正在运行
    • accepted表示该端口上正在运行某些内容
    • timeout表示防火墙阻止访问

    我的错误日志显示java.net.ConnectException: Connection timed out: connect

    所以,现在我确定这是一个防火墙问题。 然后,我只需按THIS TUTORIAL打开erlang即可进行远程访问。现在它正在发挥作用。

    要了解您的PC的IP地址,只需使用CMD键入ipconfig即可。

答案 1 :(得分:1)

这很可能是(Windows)防火墙问题,请确保允许与该端口的连接。

答案 2 :(得分:0)

通过我的ActiveMQ设置,我通常检查连接的方式是:

我有一个测试器EJB,它订阅了ActiveMQ系统上的一个主题。我启动我的ActiveMQ系统,然后在另一个系统上的我自己的服务器上运行EJB。如果连接完全正常,则此EJB在ActiveMQ仪表板上显示为使用者。此方法可确保连接设置,而无需在设置连接时出现任何细节问题。由于您的ping工作正常,因此理想情况下该测试应该成功完成。

如果成功,您需要确保您的制作人工作正常。 如果失败,您确定连接设置不正确。