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.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptively(AbstractQueuedSynchronizer. java:969) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptively(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-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]
すべてのプロデューサー スレッドがスタックしている理由はありますか?