Отказ в соединении при подключении к RabbitMQ через IP-адрес вместо localhost - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь настроить сервер RabbitMQ (версия 3.7.4, установленный через homebrew на 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
}

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я наконец-то нашел реальную проблему, и она не связана с Java или с тем, как я настроил ConnectionFactory. Это была действительно проблема, как настроить пакет RabbitMQ для домашнего варки. В файле rabbitmq-env.conf была следующая настройка

NODE_IP_ADDRESS=127.0.0.1

Этот параметр заставил RabbitMQ прослушивать только 127.0.0.1 для входящих соединений. После того как я удалил настройки и перезапустил службу, я смог подключиться и к другим машинам.

Спасибо всем за помощь!

0 голосов
/ 04 мая 2018

Проблема не в вашем коде. Я бы посоветовал вам проверить такие вещи:

  • Сервер RabbitMQ запущен и работает
  • Ваш пользователь может получить доступ к виртуальному хосту "/"
  • Проверьте настройки брандмауэра, если есть, возможно, он отказывается от соединения с удаленным хостом

Одна из них должна быть причиной, надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...