Amazon ec2 获取Rabbitmq心跳异常

Amazon ec2 获取Rabbitmq心跳异常,amazon-ec2,rabbitmq,amqp,Amazon Ec2,Rabbitmq,Amqp,我在rabbitmq中面临一个问题,即它使用以下异常终止连接 {"message":"com.rabbitmq.client.AlreadyClosedException: connection is already closed due to connection error; cause: com.rabbitmq.client.MissedHeartbeatException: Heartbeat missing with heartbeat = 60 seconds"} 因此,我对其

我在rabbitmq中面临一个问题,即它使用以下异常终止连接

 {"message":"com.rabbitmq.client.AlreadyClosedException: connection is already closed due to connection error; cause: com.rabbitmq.client.MissedHeartbeatException: Heartbeat missing with heartbeat = 60 seconds"}
因此,我对其使用以下配置:-

  • aws ec2-instance1上带有t2_小型服务器的Rabbitmq docker

  • 面临此问题的服务在带有t2小型服务器的aws ec2-instance2上运行

  • 为rabbitmq设置以下配置

  • 我只是不明白发生这种错误的原因是什么,我们如何解决这个问题

    此外,我还从尝试连接rabbitmq的服务中找到了以下日志

    {“log”:“在连接恢复期间捕获到异常!\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.632851865Z”}
    {“log”:“java.net.NoRouteToHostException:没有到主机的路由\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.633374123Z”} {“log”:“\u0009at java.net.PlainSocketImpl.socketConnect(本机方法)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.633666158Z”} {“log”:“\u0009at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.633935828Z”} {“log”:“\u0009at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.634170787Z”} {“log”:“\u0009at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.63440824Z”} {“log”:“\u0009at java.net.socksocketimpl.connect(socksocketimpl.java:392)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.634625637Z”} {“log”:“\u0009at java.net.Socket.connect(Socket.java:589)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.635038038Z”} {“log”:“\u0009at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.635172903Z”} {“log”:“\u0009at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:34)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.635369445Z”} {“log”:“\u0009at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverConnection(AutorecoveringConnection.java:435)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.635639932Z”} {“log”:“\u0009at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.beginutomaticsrecovery(AutorecoveringConnection.java:407)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00.63584649Z”} {“log”:“\u0009at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.access$000(AutorecoveringConnection.java:53)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.636051142Z”} {“log”:“\u0009at com.rabbitmq.client.impl.recovery.AutorecoveringConnection$1.shutdownpleted(AutorecoveringConnection.java:352)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00.636233667Z”} {“log”:“\u0009at com.rabbitmq.client.impl.ShutdownNotifierComponent.notifyListeners(ShutdownNotifierComponent.java:75)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.636899252Z”} {“log”:“\u0009at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:576)\n”,“stream”:“stderr”,“time”:“2018-03-22T00:00:00.637183801Z”}


    从我四处搜索的结果来看,似乎AWS负载平衡器已经关闭了连接。 能否尝试按如下方式修改配置:

    factory.setRequestedHeartbeat(30)


    看看它是否能解决您的问题?

    不,我还没有尝试使用此配置,我会尝试这样做,但将时间缩短到30分钟会有什么效果请建议,负载平衡器如何关闭连接?@Isaac-如果连接被负载平衡器中断(一个更大的问题是,为什么要在客户端和rabbitmq服务器之间安装负载平衡器)-这样可以防止它错误地检测到断开的连接。但我并不乐观这就是问题所在。@我的玩家没有配置负载平衡器b/w客户端和Rabbitmq所以有一个负载平衡器?去掉它,看看会发生什么。这种情况多久发生一次,你的网络布局是什么?错误表明是这样的正在丢失到服务器的路由。我经常会遇到此错误,但无法了解其原因。此错误表示正在丢失到服务器的路由。@请您解释一下。java.net.noroutetohestException
      factory.setAutomaticRecoveryEnabled(true);
        factory.setNetworkRecoveryInterval(1000);
        factory.setRequestedHeartbeat(60);