-
OutOfMemory
I don't know why but this configuration is not very optimal.
Any ideas, i need to have reliable delivery with about 20-30 messages per sec.
When i do load testing it throws me Out of memory, with 1500mb memory for tomcat and default configuration for amq.
I tried it with persistent delivery false but it is the same. When i exclude this contexts everything works perfect with the same load.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans" xmlns:int="http://www.springframework.org/schema/integration"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:int-jms="http://www.springframework.org/schema/integration/jms"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-2.1.xsd
http://www.springframework.org/schema/integration/jms
http://www.springframework.org/schema/integration/jms/spring-integration-jms-2.1.xsd">
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${jms.broker.url}" />
<property name="optimizeAcknowledge" value="true" />
<property name="useAsyncSend" value="true" />
</bean>
</property>
<property name="sessionCacheSize" value="10" />
<property name="cacheProducers" value="false" />
</bean>
<import resource="classpath*:META-INF/integration-context-my-module.xml" />
</beans>
Code:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-stream="http://www.springframework.org/schema/integration/stream"
xmlns:jms="http://www.springframework.org/schema/integration/jms"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-2.1.xsd
http://www.springframework.org/schema/integration/jms
http://www.springframework.org/schema/integration/jms/spring-integration-jms-2.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/integration/stream
http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd">
<int:publishing-interceptor id="interceptor" default-channel="myInMemoryChannel">
<int:method
pattern="startMe"
payload="#args.dto.id + ',' + #args.dto.name......+..+
/>
</int:publishing-interceptor>
<aop:config>
<aop:advisor advice-ref="interceptor" pointcut="bean(myBeanImpl)" />
</aop:config>
<bean id="myQueue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg name="name" value="${jms.ny.queue.name}" />
</bean>
<int:channel id="myInMemoryChannel" />
<int:channel id="filteredMyChannel" />
<int:filter
input-channel="myInMemoryChannel"
output-channel="filteredMyChannel"
throw-exception-on-rejection="false"
expression="true"
/>
<jms:outbound-channel-adapter channel="filteredMyChannel" destination="myQueue" delivery-persistent="true" explicit-qos-enabled="true" />
<int-stream:stderr-channel-adapter channel="errorChannel" append-newline="true" />
</beans>
-
What do you mean when you say: "When i exclude this contexts everything works perfect with the same load" ?
Also, it may be helpful if you explain your use case in plain words. What exactly are you trying to accomplish?