Ответ 1
Одна из возможных причин заключается в том, что пользователь, с которым вы подключаетесь, в RabbitMQ не имеет прав на доступ к виртуальным хостам.
Это можно проверить с помощью Плагина управления (вкладка "Администратор" ).
при попытке создать новое соединение с rabbitmq, работающим на другом сервере, я получил следующую ошибку:
java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:406)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:516)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; reason: java.net.SocketException: Connection reset
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at java.io.DataInputStream.readUnsignedByte(Unknown Source)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:131)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533)
Сделанные шаги:
lsof -i tcp: 5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 3084 rabbitmq 15u IPv6 18611 0t0 TCP *: amqp (LISTEN)
rabbitmqctl list_connections
Листинг соединений... guest client_server 55765 работает ... сделано.
netstat -tapnl | grep 5672
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 3084/beam.smp
tcp 0 0 0.0.0.0:55672 0.0.0.0:* LISTEN 3084/beam.smp
tcp 0 0: 5672: * LISTEN 3084/beam.smp
Одна из возможных причин заключается в том, что пользователь, с которым вы подключаетесь, в RabbitMQ не имеет прав на доступ к виртуальным хостам.
Это можно проверить с помощью Плагина управления (вкладка "Администратор" ).
Не указывайте порт по умолчанию, как указано на шагах.
Если вы не создали виртуальный хост на самом сервере, где вы пытаетесь подключиться, создайте виртуальный хост и дайте ему разрешение администратора.
Установите виртуальный хост на factory перед созданием нового соединения, например factory.setVirtualHost( "VIRTUAL_HOST_NAME_ON_SERVER" );
Убедитесь, что имя пользователя на сервере, на котором вы пытаетесь подключиться, является администратором и имеет доступ к только что созданному виртуальному хосту.
Укажите свое имя пользователя и пароль вместе с виртуальным хостом при получении соединения.
Запустите приложение в режиме отладки и проверьте, проходит ли он сейчас, factory.newConection();
Это должно заставить ваши вещи работать. Получил то же исключение, и это сработало для меня.
Если он все еще не работает, вставьте фрагмент кода.
Вы можете проверить, включена ли поддержка SSL/TLS. Затем используйте инструкцию useSslProtocol:
ConnectionFactory factory = new ConnectionFactory();
factory.useSslProtocol();