由于SocketException,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) 

采取的步骤:

  • rabbitmq正在服务器上运行。
  • 服务器已指定
  • 指定了默认端口

lsof -i tcp:5672

命令PID用户FD类型设备大小/关闭节点名称

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连接的用户无权访问虚拟主机。

您可以使用Management Plugin(Admin选项卡)进行检查。

  • 不要像步骤中提到的那样指定默认端口。

  • 如果您尚未在尝试连接的实际服务器上创建虚拟主机,请创建虚拟主机并为其提供管理员权限。

  • 在创建新连接之前在工厂设置虚拟主机,例如factory.setVirtualHost(“VIRTUAL_HOST_NAME_ON_SERVER”);

  • 确保您尝试连接的服务器上的用户名是Admin,并且可以访问刚刚创建的虚拟主机。

  • 获取连接时,请指定您的用户名和密码以及虚拟主机。

  • 在调试模式下启动应用程序,并检查它现在是否通过,factory.newConection();

这应该让你的事情发挥作用。 得到了同样的例外,它对我有用。

如果它仍然无效,请粘贴您的代码段。

您可以检查是否启用了SSL / TLS支持。 然后使用指令useSslProtocol:

 ConnectionFactory factory = new ConnectionFactory(); factory.useSslProtocol();