【问题标题】:rabbitmq connection recovery issue in spring cloud stream春季云流中的rabbitmq连接恢复问题
【发布时间】:2018-02-07 13:30:24
【问题描述】:

我是 spring 的新手,我使用的是 rabbitmq ,它位于 spring-cloud-stream 中。在这里,我使用的是 rabbitmq 4.0.7 的版本。 spring-AMQP 1.7 的版本。我检查了所有的东西,但我无法解决问题。所以,错误是

Caught an exception during connection recovery!
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.AMQConnection.start(AMQConnection.java:350)
    at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:36)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverConnection(AutorecoveringConnection.java:476)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.beginAutomaticRecovery(AutorecoveringConnection.java:444)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.access$000(AutorecoveringConnection.java:53)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection$1.shutdownCompleted(AutorecoveringConnection.java:383)
    at com.rabbitmq.client.impl.ShutdownNotifierComponent.notifyListeners(ShutdownNotifierComponent.java:75)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:578)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37)
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
    ... 8 more
Caused by: java.io.EOFException
    at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:290)
    at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)
    at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:139)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:538)
    ... 1 more


Channel channel = (Channel)message.getHeaders().get(AmqpHeaders.CHANNEL);

通过这种方式创建通道,我有一个application.yml 文件,我在其中设置了所有绑定属性。谁能告诉我这是什么原因?

【问题讨论】:

    标签: java spring rabbitmq spring-cloud-stream spring-rabbit


    【解决方案1】:

    1.7.1 默认禁用自动恢复(除非您将预配置的 Rabbit ConnectionFactory 注入到 CachingConnectionFactory 中)。

    在 1.7.0 中默认错误启用。

    Spring AMQP 不需要自动恢复,从 1.0 开始就有自己的连接恢复机制。

    当前 1.7.x 版本为 1.7.6;当前(首选)版本是 2.0.2。

    这并不能解释 EOFException(自动恢复仍然正常工作 - 它只是不需要)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2016-09-07
      • 2015-07-25
      • 2011-10-19
      相关资源
      最近更新 更多