ActiveMQ 生产者无限期等待有效连接
ActiveMQ producer waiting indefinitely for a valid connection
我们在向 ActiveMQ 5.15.4 代理生成消息时遇到问题。
试图生成消息的线程被无限期阻塞:
Thread 464: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
- org.apache.activemq.transport.failover.FailoverTransport.oneway(java.lang.Object) @bci=370, line=620 (Compiled frame)
- org.apache.activemq.transport.MutexTransport.oneway(java.lang.Object) @bci=12, line=68 (Interpreted frame)
似乎 FailoverTransport
对象正在等待获得有效连接(传输对象不为空),但重新连接任务从未启动。
知道我们如何才能达到这种情况以及如何解决它吗?
最后我们做了几个动作,从那以后我们没有遇到这个问题:
- 从 CachingConnectionFactory 切换到 PooledConnectionFactory
- 为不同于监听器使用的消息发送器使用专用连接工厂
- 为每个目的地定义一个 JmsTemplate,并设置 defaultDestination
只有一次。 (我们以前只有1个JmsTemplate,目的地是在send方法中定义的)
我们在向 ActiveMQ 5.15.4 代理生成消息时遇到问题。 试图生成消息的线程被无限期阻塞:
Thread 464: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
- org.apache.activemq.transport.failover.FailoverTransport.oneway(java.lang.Object) @bci=370, line=620 (Compiled frame)
- org.apache.activemq.transport.MutexTransport.oneway(java.lang.Object) @bci=12, line=68 (Interpreted frame)
似乎 FailoverTransport
对象正在等待获得有效连接(传输对象不为空),但重新连接任务从未启动。
知道我们如何才能达到这种情况以及如何解决它吗?
最后我们做了几个动作,从那以后我们没有遇到这个问题:
- 从 CachingConnectionFactory 切换到 PooledConnectionFactory
- 为不同于监听器使用的消息发送器使用专用连接工厂
- 为每个目的地定义一个 JmsTemplate,并设置 defaultDestination 只有一次。 (我们以前只有1个JmsTemplate,目的地是在send方法中定义的)