Java ActiveMQ使用者处于阻止状态
我得到了这个非常奇怪的随机错误 似乎我的线程在出列时被阻塞了。 我不明白为什么他们处于“阻塞”模式,而不是在 “等待时间”模式 是什么导致了这种行为?当这种情况发生时,我没有得到任何回复 返回,但消息正在处理中 当我查看线程转储时,它通常处于时间等待模式。但是 这一次,它是在封锁模式 顺便说一句,我正在使用ActiveMQ 5.5.0 SimplePriorityMessageDispatchChannel似乎越来越流行 重复使用,它将使用相同的方法。 同步方法导致它被阻止Java ActiveMQ使用者处于阻止状态,java,concurrency,jms,activemq,spring-jms,Java,Concurrency,Jms,Activemq,Spring Jms,我得到了这个非常奇怪的随机错误 似乎我的线程在出列时被阻塞了。 我不明白为什么他们处于“阻塞”模式,而不是在 “等待时间”模式 是什么导致了这种行为?当这种情况发生时,我没有得到任何回复 返回,但消息正在处理中 当我查看线程转储时,它通常处于时间等待模式。但是 这一次,它是在封锁模式 顺便说一句,我正在使用ActiveMQ 5.5.0 SimplePriorityMessageDispatchChannel似乎越来越流行 重复使用,它将使用相同的方法。 同步方法导致它被阻止 Thread 219
Thread 21906: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may
be imprecise)
-
org.apache.activemq.SimplePriorityMessageDispatchChannel.dequeue(long)
@bci=57, line=89 (Compiled frame)
- org.apache.activemq.ActiveMQMessageConsumer.dequeue(long) @bci=19,
line=452 (Compiled frame)
- org.apache.activemq.ActiveMQMessageConsumer.receive(long) @bci=53,
line=577 (Compiled frame)
-
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(javax.jms.MessageConsumer)
@bci=23, line=429 (Compiled frame)
-
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(java.lang.Object,
javax.jms.Session, javax.jms.MessageConsumer,
org.springframework.transaction.TransactionStatus) @bci=119, line=310
(Compiled frame)
-
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(java.lang.Object,
javax.jms.Session, javax.jms.MessageConsumer) @bci=94, line=263
(Compiled frame)
-
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener()
@bci=17, line=1058 (Compiled frame)
-
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop()
@bci=153, line=1050 (Compiled frame)
谢谢你能发布你的监听器配置吗?你的代码是什么样子的?JMS构造不是线程安全的,因此如果在所有JMS构造中使用相同的连接,则每个线程必须具有不同的会话/使用者/生产者。