RabbitMQ 新连接由于 SocketException 而被拒绝

2022-09-02 03:38:43

在尝试创建与在其他服务器上运行的 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)

兔子list_connections

正在列出连接...客人client_server 55765 运行 ...做。

netstat -tapnl |格雷普 5672

tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 3084/beam.smp

tcp 0 0 0.0.0.0.0:55672 0.0.0.0:* LISTEN 3084/beam.smp

tcp 0 0 :::5672 :::* LISTEN 3084/beam.smp


答案 1

其中一个可能的原因是,您连接到 RabbitMQ 的用户无权访问虚拟主机。

您可以使用管理插件(“管理”选项卡)进行检查。


答案 2
  • 不要指定您在步骤中提到的默认端口。

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

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

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

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

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

这应该会让你的东西工作。有同样的例外,它对我有用。

如果仍然不起作用,请粘贴您的代码片段。


推荐