使用activemq时内存一直加大,高手求教!

leeking888 2014-01-27 02:02:02
一个WEB项目中使用了activemq,使用了spring进行管理。监听的大概有200个队列,里面什么都没做。然后在jboss中运行时,内存不断地增加。使用jconsole查看地的时候,ps old gen已经满了。请教高手。。

以下是配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="poolConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory" ref="mqConnectionFactory" />
<property name="maxConnections" value="300" />
</bean>

<bean id="mqConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=0" />
<property name="userName" value="root" />
<property name="password" value="dj0qltj" />
<property name="useAsyncSend" value="true" />
</bean>

<!-- JMS事务管理 -->
<bean id="defaultJmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="poolConnectionFactory" />
</bean>

<!-- 创建消息目标 队列目标 -->
<bean id="rantzDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="rantz.marketion.queue" />
</bean>

<bean id="jmst" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref bean="poolConnectionFactory" />
</property>
<property name="deliveryMode" value="2" />
<property name="defaultDestination" ref="rantzDestination" />
</bean>

<!-- 发送队列监听器 -->
<bean id="sendSmsMessageListener" class="mypkg.TestListener"/>
<bean id="receiveSmsMessageListener" class="mypkg.TestListener"/>


<bean id="returnStatusListener" class="mypkg.TestListener"/>



<bean id="statusRetryListener" class="mypkg.TestListener"/>

<bean id="signalQueueListener" class="mypkg.TestListener"/>


<bean id="s001" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S001" />
</bean>
<bean id="sendContainer001" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s001"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s002" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S002" />
</bean>
<bean id="sendContainer002" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s002"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s003" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S003" />
</bean>
<bean id="sendContainer003" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s003"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="returnstatus00" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="RETURNSTATUS00" />
</bean>
<bean id="returnStatusContainer00" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="returnstatus00"></property>
<property name="messageListener" ref="returnStatusListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s111" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S111" />
</bean>
<bean id="sendContainer111" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s111"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s112" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S112" />
</bean>
<bean id="sendContainer112" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s112"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s113" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S113" />
</bean>
<bean id="sendContainer113" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s113"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="receivesms11" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="RECEIVESMS11" />
</bean>
<bean id="receiveContainer11" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="receivesms11"></property>
<property name="messageListener" ref="receiveSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="returnstatus11" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="RETURNSTATUS11" />
</bean>
<bean id="returnStatusContainer11" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="returnstatus11"></property>
<property name="messageListener" ref="returnStatusListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s121" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S121" />
</bean>
<bean id="sendContainer121" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s121"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>

<bean id="s122" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="S122" />
</bean>
<bean id="sendContainer122" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="poolConnectionFactory"></property>
<property name="concurrentConsumers" value="1" />
<property name="destination" ref="s122"></property>
<property name="messageListener" ref="sendSmsMessageListener"></property>
<property name="transactionManager" ref="defaultJmsTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>
</beans>
...全文
724 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leeking888 2014-01-28
  • 打赏
  • 举报
回复
原因找到了,是activemq包版本的问题。activemq的版本是5.6,使用5.6的core和pool包时就会出错。很奇怪。自己记录一下。把上面两个包恢复为5.5就可以了。
leeking888 2014-01-27
  • 打赏
  • 举报
回复
内存是足够的,给了1个G的。在使用myeclipse中运行main方法时,可以正常,并且内存可以回收。但是使用jboss的时候,就不行了。ps old gen 一直向上加。到最后都满了,越来越慢。监听里面还什么都没做 奇怪了。
雕虫大计 2014-01-27
  • 打赏
  • 举报
回复
你分配的内存是多大?
leeking888 2014-01-27
  • 打赏
  • 举报
回复
引用 3 楼 LZW190 的回复:
s001,s002每一个都是一个实例
这些都是队列的名称啊。要不怎么写?
雕虫大计 2014-01-27
  • 打赏
  • 举报
回复
s001,s002每一个都是一个实例
leeking888 2014-01-27
  • 打赏
  • 举报
回复
引用 1 楼 LZW190 的回复:
你怎么建了那么多个实例,一个就行了
哪里多了实例了?就只有一个啊。其他都是引用的呀
雕虫大计 2014-01-27
  • 打赏
  • 举报
回复
你怎么建了那么多个实例,一个就行了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧