Я пытаюсь настроить сервер 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
}