Мы используем HornetQ 2.2.5, и наша проблема заключается в том, что на стороне клиента (которая отправляет сообщения в Q) все потоки производителей застревают в состоянии WAITING.Нити производителей HornetQ застряли в состоянии WAITING
Обратите внимание, что производитель находится на одной машине, а сервер HornetQ - на другом.
Это нить дамп на стороне клиента:
Тема: пул-10-жильный-9: приоритета: 5, демон: ложный, ThreadId: 521, ThreadState: ОЖИДАНИЕ, lockName: Java .util.concurrent.Semaphore $ NonfairSync @ 60568a13
sun.misc.Unsafe.park (Native Method)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:156) Явы. util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchro nizer.java:811) java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly (AbstractQueuedSynchronizer.java:969) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1281)
Java. util.concurrent.Semaphore.acquire (Semaphore.java:441) org.hornetq.core.client.impl.ClientProducerCreditsImpl.acquireCredits (ClientProducerCreditsImpl.java:74) org.hornetq.core.client.impl.ClientProducerImpl.doSend (ClientProducerImpl.java:305) org.hornetq.core.client.impl.ClientProducerImpl.send (ClientProducerImpl.java:142) org.hornetq.jms.client.HornetQMessageProducer.doSend (HornetQMessageProducer.java:451) org.hornetq.jms.client.HornetQMessageProducer.send (HornetQMessageProducer.java:199)
соединение и сеанса к Q кэшируются и повторно использовать на стороне клиента.
На стороне сервера есть следующий лог:
[hornetq-отказ-проверить-нить] 19: 25: 30820 ПРЕДУПРЕЖДЕНИЕ [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl]
Обнаружен отказ подключения: не получено данных от /10.2.6.11:50697. Вероятно, клиент вышел из строя или отключился , не закрыв его соединение, или сеть между сервером и сбой клиента. Возможно, вы также неправильно настроили connection-ttl и период проверки отказа клиента. Пожалуйста, ознакомьтесь с руководством пользователя для . Теперь соединение будет закрыто. [code = 3]
Есть ли причина, по которой все потоки производителей застревают?
в соответствии с вашим ответом, сообщения ждать потребляться. но мы проверили, что Q пуст (с QueueBrowser), и, кроме того, addfress-full-policy, если Q сконфигурирован как DROP. здесь Q Конфигурация XML: <адрес-настройки> 524288000 max-size- байты> 10485760 page-size-bytes> <адрес-полная политика> DROP address-full-policy> address-setting> address-settings> –
Кроме того, мы проверили, что потребитель работает - мы просмотрели Q, пока потребитель работал, и браузер показал 0 msgs в Q., тогда мы отключили пользователя, а браузер показал, что Q содержит все больше и больше сообщений. во время этого процесса производитель блокируется. –
Вы используете 2.2.5, старую версию. Вероятно, вы должны обновиться, и если вы все еще видите проблему, мне нужен репликатор для ошибки. –