Java 由于SocketException,RabbitMQ新连接被拒绝

Java 由于SocketException,RabbitMQ新连接被拒绝,java,connection,rabbitmq,amqp,Java,Connection,Rabbitmq,Amqp,在尝试创建到在不同服务器上运行的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(AMQChan

在尝试创建到在不同服务器上运行的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(侦听)

rabbitmqctl列表\u连接

正在列出连接。。。 来宾客户端服务器55765正在运行 ……完成了

netstat-tapnl | grep 5672

tcp 0.0.0.0:15672 0.0.0.0:*收听3084/beam.smp

tcp 0.0.0.0:55672 0.0.0.0:*收听3084/beam.smp


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

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

您可以使用管理插件(管理选项卡)检查此项。

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

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

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

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

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

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

这会让你的东西运转起来。 得到了同样的例外,这对我来说很有效


如果仍然无法使用,请粘贴代码片段。

您可以检查是否启用了SSL/TLS支持。然后使用说明UseSLProtocol:

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

检查主机和端口值

在application.properties中

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest


请参阅RabbitMQ站点在端口15672上运行,而在代码中使用amqp协议。

哪个RabbitMQ版本?RabbitMQ版本:3.0.4,服务器在centos计算机上运行。1。它在本地主机中工作吗?可能是防火墙问题。2.尝试在服务器上执行
rabbitmqctl list\u connections
,您可能有太多打开的连接。是的,它在localhost中工作。我尝试了一个简单的生产者-消费者程序。我还执行了rabbitmqctl list_connections命令,在列表中只获得了两个端口,而rabbitmqctl list queues命令当前只列出了两个队列。我重新启动了rabbitmq服务器并重新尝试,但没有结果。防火墙不是问题。我已经验证过了。还有我可能遗漏的瓶颈吗?提前谢谢。我想这是tcp套接字问题!您是否尝试从客户端远程登录您的_服务器5672?