首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在applicationContext.xml中使用ActiveMQ时,DefaultMessageListenerContainer用户不断增长

在applicationContext.xml中使用ActiveMQ时,DefaultMessageListenerContainer用户不断增长
EN

Stack Overflow用户
提问于 2015-01-10 03:41:17
回答 1查看 550关注 0票数 0

我们定义了一个包含ActiveMQ侦听器容器的applicationContext.xml。我们使用DefaultMessageListenerContainer,如下所示:

代码语言:javascript
复制
<bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${smqurl}"/>
</bean>

<bean id="documentListener" class="org.abc.jms.SMsgListener">
    <property name="appProperties" ref="ApplicationProperties"/>
</bean>

<bean id="cachingConnectionFactory"
    class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="jmsFactory" />
    <property name="sessionCacheSize" value="1"/>
    <property name="cacheConsumers" value="false"/>
</bean>

<bean id="container"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="cachingConnectionFactory"/>
    <property name="messageListener" ref="documentListener"/>
    <property name="destinationName" value="SQueue" />
    <property name="concurrentConsumers" value="10" />
    <property name="maxConcurrentConsumers" value="20" />
</bean>

问题是,消费者一直在增长,并没有受到破坏。最终,我们遇到了一个OutOfMemory异常。

我们尝试在文档和在线上查找,但没有找到任何明确的方法来通过applicationContext.xml中的属性销毁/释放消费者。

其他人也遇到过类似的问题吗?您最终是如何解决这个问题的?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-01-14 18:48:42

我们使用Apache Camel进行JMS集成,它抽象了Spring (DefaultMessageListenerContainer),根据我们的经验,它工作得很好。

然而,我会像这样解决你的问题:

DMLC

  • 的默认缓存级别是CACHE_CONSUMER (documentation)。试着调优这个属性,看看是不是DMLC导致了泄漏。

  • 从一个像VisialVM ( JDK,$JAVA_HOME/bin/jvisual.vm附带的)这样的工具开始进行堆分析。它可以让您看到在内存

中保存对象的是什么

如果你正在评估Camel,这个来自RedHat的开发人员的blog post帮助我们解决了一些事务方面的问题。如果你没有使用事务,这应该不是问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27867984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档