Java ActiveMQ使用者处于阻止状态

Java ActiveMQ使用者处于阻止状态,java,concurrency,jms,activemq,spring-jms,Java,Concurrency,Jms,Activemq,Spring Jms,我得到了这个非常奇怪的随机错误 似乎我的线程在出列时被阻塞了。 我不明白为什么他们处于“阻塞”模式,而不是在 “等待时间”模式 是什么导致了这种行为?当这种情况发生时,我没有得到任何回复 返回,但消息正在处理中 当我查看线程转储时,它通常处于时间等待模式。但是 这一次,它是在封锁模式 顺便说一句,我正在使用ActiveMQ 5.5.0 SimplePriorityMessageDispatchChannel似乎越来越流行 重复使用,它将使用相同的方法。 同步方法导致它被阻止 Thread 219

我得到了这个非常奇怪的随机错误

似乎我的线程在出列时被阻塞了。 我不明白为什么他们处于“阻塞”模式,而不是在 “等待时间”模式

是什么导致了这种行为?当这种情况发生时,我没有得到任何回复 返回,但消息正在处理中

当我查看线程转储时,它通常处于时间等待模式。但是 这一次,它是在封锁模式

顺便说一句,我正在使用ActiveMQ 5.5.0

SimplePriorityMessageDispatchChannel似乎越来越流行 重复使用,它将使用相同的方法。 同步方法导致它被阻止

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构造中使用相同的连接,则每个线程必须具有不同的会话/使用者/生产者。