簡體   English   中英

通過 IP 地址而不是 localhost 連接到 RabbitMQ 時連接被拒絕

[英]Connection refused when connecting to RabbitMQ via IP address instead of localhost

我正在嘗試設置 RabbitMQ 服務器(版本 3.7.4,通過 macOS 10.13.4 上的自制軟件安裝),以便我的同事可以通過內部網絡使用它。 我們正在使用官方 Java 客戶端 ( com.rabbitmq:amqp-client:5.2.0 )。 不幸的是,他們只收到一個ConnectException消息, Connection refused

java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60)
    at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:134)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:997)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:956)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:914)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1068)
    at my.own.private.RabbitMqConnector.connect(RabbitMqConnector.java:29)

我們已經設置了另一個具有管理員權限的用戶帳戶(不是guest )。 使用幾乎相同的 Java 代碼,我可以在本地連接(將主機設置為localhost ),但如果我使用我的 IP 地址則不行。 根據 RabbitMQ 文檔,RabbitMQ 服務器默認綁定到所有網絡接口(否則我會說這是地址綁定的問題)。 我禁用了我的防火牆,所以這應該不是問題。

這是相應的代碼:

final ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setUsername("username");
connectionFactory.setPassword("password");
connectionFactory.setHost("10.10.33.12");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/");

try (final Connection connection = connectionFactory.newConnection()) {
    // doo stuff with the connection
}

我終於找到了實際問題,它與 Java 或我如何配置ConnectionFactory無關。 如何配置自制軟件的RabbitMQ包確實是一個問題。 rabbitmq-env.conf文件中,有以下設置

NODE_IP_ADDRESS=127.0.0.1

此設置導致 RabbitMQ 僅在 127.0.0.1 上偵聽傳入連接。 刪除設置並重新啟動服務后,我也可以從其他機器連接。

謝謝大家的幫助!

問題不在於您的代碼。 我建議您檢查以下內容:

  • RabbitMQ 服務器已啟動並正在運行
  • 您的自定義用戶可以訪問虛擬主機“/”
  • 檢查防火牆設置(如果有),可能是拒絕與遠程主機連接

其中之一應該是原因,希望它有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM