简体   繁体   English

RabbitMQ spring JAVA客户端停止使用消息,重新启动后恢复

[英]RabbitMQ spring JAVA Client Stopped consuming messages Resumed on Restart

I am using spring-rabbit-1.7.1 library for rabbitmq consumer in java. 我正在为java中的Rabbitmq消费者使用spring-rabbit-1.7.1库。 I have 7 consumers running and same servers are producers as well. 我有7个使用者在运行,相同的服务器也是生产者。 Suddenly consumers stopped consuming messages and resumed when i restarted them. 突然,消费者停止使用消息,并在我重新启动消息时恢复了消息。 There were no exceptions and thread dump is as follow: 没有例外,线程转储如下:

      SimpleAsyncTaskExecutor-1" #77 prio=5 os_prio=0 tid=0x00007f497ef34800 nid=0x4e93 waiting on condition [0x00007f490cee6000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x000000064c00bfa0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
        at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.nextMessage(BlockingQueueConsumer.java:439)
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1212)
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1187)
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:96)
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContai

"AMQP Connection 10.66.107.115:5672" #78 prio=5 os_prio=0 tid=0x00007f49901a5000 nid=0x4e94 runnable [0x00007f490cde5000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
        - locked <0x000000064c3534d0> (a java.io.BufferedInputStream)
        at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288)

Producers are working fine as number of messages in queue is creeping up. 随着队列中消息数量的增加,生产者工作得很好。

The current 1.7.x version is 1.7.10. 当前的1.7.x版本是1.7.10。

Make sure that enableAutoRecovery is false in the underlying RabbitMQ ConnectionFactory . 确保基础RabbitMQ ConnectionFactory中的enableAutoRecoveryfalse It is set to true by default in the 4.0.x client; 在4.0.x客户端中,默认情况下将其设置为true Spring AMQP doesn't need the client auto-recovery because it has had its own recovery mechanism since 1.0.0. Spring AMQP不需要客户端自动恢复,因为它从1.0.0版本开始就有自己的恢复机制。

There have been several bug fixes to solve most compatibility problems, but it should be set to false . 已解决了许多错误,以解决大多数兼容性问题,但应将其设置为false Spring AMQP will disable it automatically, unless you provide a pre-configured RabbitMQ ConnectionFactory - such as with spring-cloud-connectors on PCF. 除非您提供预先配置的RabbitMQ ConnectionFactory例如PCF上的spring-cloud-connectors,否则Spring AMQP将自动禁用它。

This has been fixed in the 2.0.3 version of the connectors. 该问题已在连接器的2.0.3版本中修复。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 RabbitMQ java客户端停止使用消息 - RabbitMQ java client stops consuming messages 使用Spring Integration优化Rabbitmq的消费消息 - Optimise Consuming messages from rabbitmq using Spring Integration Spring 云 Stream + RabbitMQ - 使用队列中的现有消息 - Spring Cloud Stream + RabbitMQ - Consuming existing messages in queue 使用AKKA actor在Java中使用RabbitMQ消耗多个消息 - Consuming multiple messages from RabbitMQ in java with AKKA actors 如何在发生错误时停止使用来自 kafka 的消息,并在 spring 启动一段时间后再次重新启动消费 - how to stop consuming messages from kafka when error occurred and restart consuming again after some time in spring boot Java Spring Kafka 模板生产者在代理重启时丢失消息 - Java Spring Kafka Template producer lost messages on broker restart 消耗aws-java-sdk后自动关闭spring-boot RabbitMQ - spring-boot RabbitMQ shutdown after consuming aws-java-sdk 如何使用 @RabbitListener 停止和重新启动来自 RabbitMQ 的消费消息 - How to stop and restart consuming message from the RabbitMQ with @RabbitListener 我的容器化Java RabbitMQ使用者停止使用 - My containerized Java RabbitMQ consumer stops consuming 如何在 spring 集成中推迟消息的消耗 - How to postpone consuming of messages in spring integration
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM