Мы используем HornetQ 2.2.5, и наша проблема заключается в том, что на стороне клиента (который отправляет сообщения в Q) все потоки-производители застряли в состоянии WAITING.
обратите внимание, что производитель находится на одной машине, а сервер HornetQ — на другой.
Это дамп потока на стороне клиента:
Поток: pool-10-thread-9: приоритет: 5, демон: false, threadId: 521, threadState: WAITING, lockName: java.util.concurrent.Semaphore $ NonfairSync@60568a13
sun.misc.Unsafe.park (собственный метод)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:156) java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811) java:969)
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-failure-check-thread] 19:25:30,820 ПРЕДУПРЕЖДЕНИЕ [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl]
Обнаружен сбой подключения: не получены данные из /10.2.6.11:50697 . Вероятно, клиент завершил работу или произошел сбой, не разорвав соединение, или произошел сбой в сети между сервером и клиентом. Возможно, вы также неправильно настроили connection-ttl и client-failure-check-period. Пожалуйста, обратитесь к руководству пользователя для получения дополнительной информации. Теперь соединение будет закрыто. [код=3]
Есть ли причина, по которой все потоки производителей застряли?