RabbitMQ spring JAVA Client Прекращает использование сообщений Возобновляется при перезапуске - PullRequest
0 голосов
/ 26 сентября 2018

Я использую библиотеку spring-rabbit-1.7.1 для пользователя rabbitmq в java.У меня работает 7 потребителей, и те же серверы также являются производителями.Внезапно потребители перестали потреблять сообщения и возобновили, когда я перезапустил их.Не было никаких исключений, и дамп потока выглядит следующим образом:

      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)

Производители работают нормально, так как количество сообщений в очереди увеличивается.

1 Ответ

0 голосов
/ 27 сентября 2018

Текущая версия 1.7.x - 1.7.10.

Убедитесь, что enableAutoRecovery равно false в базовом RabbitMQ ConnectionFactory.По умолчанию в клиенте 4.0.x установлено значение true;Spring AMQP не нуждается в автоматическом восстановлении клиента, поскольку он имеет собственный механизм восстановления начиная с 1.0.0.

Было исправлено несколько ошибок для решения большинства проблем совместимости, но его следует установить на false.Spring AMQP отключит его автоматически, если вы не предоставите предварительно настроенный RabbitMQ ConnectionFactory - например, с разъемами spring-cloud на PCF.

Это было исправлено в версии 2.0.3 разъемов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...