Apache camel 队列使用者有挂起的消息,但未对其进行处理

Apache camel 队列使用者有挂起的消息,但未对其进行处理,apache-camel,activemq,spring-jms,Apache Camel,Activemq,Spring Jms,我使用的是activemq、camel和spring的组合。对于队列,我们有多个消费者;在一些队列使用者上,我们看到有挂起的消息(高达100条,与预取相同),它们根本没有得到处理,但同一队列的其他使用者,一切照旧 我更深入地了解了发生的情况,发现spring cachingconnectionfactory可能是导致此问题的原因-我们怀疑此缓存连接工厂可能使某些客户端处于非活动状态,并且未处理留在预取缓冲区中的消息。我们的发现正确吗 除此之外,是否有任何方法可以从非活动使用者释放的预取缓冲区获取

我使用的是activemq、camel和spring的组合。对于队列,我们有多个消费者;在一些队列使用者上,我们看到有挂起的消息(高达100条,与预取相同),它们根本没有得到处理,但同一队列的其他使用者,一切照旧

我更深入地了解了发生的情况,发现spring cachingconnectionfactory可能是导致此问题的原因-我们怀疑此缓存连接工厂可能使某些客户端处于非活动状态,并且未处理留在预取缓冲区中的消息。我们的发现正确吗


除此之外,是否有任何方法可以从非活动使用者释放的预取缓冲区获取消息

不能使用具有可变并发性的
CachingConnectionFactory
,或者必须禁用使用者缓存;有关
DefaultMessageListenerContainer
,请参阅javadocs

 * <p><b>Note: Don't use Spring's {@link org.springframework.jms.connection.CachingConnectionFactory}
 * in combination with dynamic scaling.</b> Ideally, don't use it with a message
 * listener container at all, since it is generally preferable to let the
 * listener container itself handle appropriate caching within its lifecycle.
*注意:不要使用Spring的{@link org.springframework.jms.connection.CachingConnectionFactory}
*与动态缩放相结合。理想情况下,不要将其与消息一起使用
*侦听器容器,因为通常最好让
*侦听器容器本身在其生命周期内处理适当的缓存。

否则空闲的消费者将被放入缓存。

谢谢,这也是我们的发现。是否有办法检索滞留在非活动消费者处的消息?否;除非卷再次增加,并且消费者已从缓存中签出。