You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by tnk <ju...@gmail.com> on 2017/06/05 07:54:09 UTC

activemq store percent is very high

Hi,

 i have simple camel route, which reads from activemq queue and sends email
messages, if exception occurs message is moved to dead letter queue. The
problem is, store percent usage is very high. 10 messages in DLQ consumes
30% store (limit for storage is 1 gb), it is ~30mb for one message, but the
message is really small (about 250 text characters in the body). 

Any ideas why and how to fix this?

Using servicemix v5.3.1, camel v2.13.3, active mq 5.10.0. CentOS 6.6.

camel context:
<camelContext id="email-camel-context"
xmlns="http://camel.apache.org/schema/spring">

	<endpoint id="smtpEndpoint"
uri="smtp://${smtp.host}:${smtp.port}?from=${from.email}&amp;contentType=${content.type}"
/>

	<camel:route id="email-sending-route" errorHandlerRef="mailErrorHandler">
		<camel:from uri="amq:queue:email.outgoing?disableReplyTo=true" />
		<camel:transacted ref="requires_new" />
		<camel:setExchangePattern pattern="InOnly" />
		<camel:removeHeaders pattern="JMS*" />
		<log message="Sending email message to ${header.to}" loggingLevel="INFO"
logName="log.integration.email"/>
		
		<camel:doTry>
			<camel:to ref="smtpEndpoint" />
			<camel:doCatch>
				<camel:exception>java.lang.Exception</camel:exception>
				<camel:handled><camel:constant>false</camel:constant></camel:handled>
				<log message="Sending email message to ${header.to} FAILED."
loggingLevel="ERROR" logName="log.integration.email"/>
				<camel:rollback markRollbackOnly="true" />
			</camel:doCatch>
		</camel:doTry>
	</camel:route>
</camelContext>

<bean id="mailErrorHandler"
class="org.apache.camel.builder.DeadLetterChannelBuilder">
	<property name="deadLetterUri" value="jms:queue:email.outgoing.dlq" />
	<property name="redeliveryPolicy" ref="emailRedeliveryConfig" />
</bean>

<bean id="emailRedeliveryConfig"
class="org.apache.camel.processor.RedeliveryPolicy">
	<property name="maximumRedeliveries" value="3"/>
	<property name="redeliveryDelay" value="5000"/>
</bean>

<bean id="requires_new"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
	<property name="transactionManager" ref="jmsTransactionManager" />
	<property name="propagationBehaviorName" value="PROPAGATION_REQUIRES_NEW"
/>
</bean>

<bean id="amq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
	<property name="connectionFactory" ref="jmsConnectionFactory" />
	<property name="transacted" value="true" />
	<property name="transactionManager" ref="jmsTransactionManager"/>
	<property name="configuration" ref="jmsConfig" />
</bean>

<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
	<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="shutdown" class="org.apache.camel.impl.DefaultShutdownStrategy">
	<property name="timeout" value="30" />
</bean>

<bean id="jmsConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
	<property name="brokerURL" value="${activemq.broker.url}" />
	<property name="userName" value="${activemq.user}" />
	<property name="password" value="${activemq.password}" />
	<property name="watchTopicAdvisories" value="false" />
</bean>

<bean id="pooledConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start"
destroy-method="stop">
	<property name="maxConnections" value="2" />
	<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="jmsConfig"
class="org.apache.camel.component.jms.JmsConfiguration">
	<property name="connectionFactory" ref="pooledConnectionFactory" />
	<property name="transacted" value="true" />
	<property name="concurrentConsumers" value="1" />
	<property name="deliveryPersistent" value="true" />
	<property name="requestTimeout" value="10000" />
	<property name="cacheLevelName"  value="CACHE_CONSUMER" />
</bean>



--
View this message in context: http://camel.465427.n5.nabble.com/activemq-store-percent-is-very-high-tp5801821.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: activemq store percent is very high

Posted by Doug Douglass <do...@gmail.com>.
As Taarriq said, this is a question for ActiveMQ, but having dealt with a
similar problem recently here's some pointers:


http://activemq.2283324.n4.nabble.com/KahaDB-vs-LevelDB-td4706599.html#a4706648

http://activemq.apache.org/kahadb.html#KahaDB-Multi(m)kahaDBPersistenceAdapter

Cheers
Doug

On Mon, Jun 5, 2017 at 3:40 AM, Taariq Levack <ta...@gmail.com> wrote:

> Hi
> This is really an activemq question, but the short answer is to clear the
> DLQ periodically.
>
> Cheers
>
> On 05 Jun 2017 09:54, "tnk" <ju...@gmail.com> wrote:
>
> > Hi,
> >
> >  i have simple camel route, which reads from activemq queue and sends
> email
> > messages, if exception occurs message is moved to dead letter queue. The
> > problem is, store percent usage is very high. 10 messages in DLQ consumes
> > 30% store (limit for storage is 1 gb), it is ~30mb for one message, but
> the
> > message is really small (about 250 text characters in the body).
> >
> > Any ideas why and how to fix this?
> >
> > Using servicemix v5.3.1, camel v2.13.3, active mq 5.10.0. CentOS 6.6.
> >
> > camel context:
> > <camelContext id="email-camel-context"
> > xmlns="http://camel.apache.org/schema/spring">
> >
> >         <endpoint id="smtpEndpoint"
> > uri="smtp://${smtp.host}:${smtp.port}?from=${from.email}&
> > amp;contentType=${content.type}"
> > />
> >
> >         <camel:route id="email-sending-route" errorHandlerRef="
> > mailErrorHandler">
> >                 <camel:from uri="amq:queue:email.outgoing?
> disableReplyTo=true"
> > />
> >                 <camel:transacted ref="requires_new" />
> >                 <camel:setExchangePattern pattern="InOnly" />
> >                 <camel:removeHeaders pattern="JMS*" />
> >                 <log message="Sending email message to ${header.to}"
> > loggingLevel="INFO"
> > logName="log.integration.email"/>
> >
> >                 <camel:doTry>
> >                         <camel:to ref="smtpEndpoint" />
> >                         <camel:doCatch>
> >                                 <camel:exception>java.lang.
> > Exception</camel:exception>
> >                                 <camel:handled><camel:
> > constant>false</camel:constant></camel:handled>
> >                                 <log message="Sending email message to ${
> > header.to} FAILED."
> > loggingLevel="ERROR" logName="log.integration.email"/>
> >                                 <camel:rollback markRollbackOnly="true"
> />
> >                         </camel:doCatch>
> >                 </camel:doTry>
> >         </camel:route>
> > </camelContext>
> >
> > <bean id="mailErrorHandler"
> > class="org.apache.camel.builder.DeadLetterChannelBuilder">
> >         <property name="deadLetterUri" value="jms:queue:email.
> outgoing.dlq"
> > />
> >         <property name="redeliveryPolicy" ref="emailRedeliveryConfig" />
> > </bean>
> >
> > <bean id="emailRedeliveryConfig"
> > class="org.apache.camel.processor.RedeliveryPolicy">
> >         <property name="maximumRedeliveries" value="3"/>
> >         <property name="redeliveryDelay" value="5000"/>
> > </bean>
> >
> > <bean id="requires_new"
> > class="org.apache.camel.spring.spi.SpringTransactionPolicy">
> >         <property name="transactionManager" ref="jmsTransactionManager"
> />
> >         <property name="propagationBehaviorName"
> > value="PROPAGATION_REQUIRES_NEW"
> > />
> > </bean>
> >
> > <bean id="amq"
> > class="org.apache.activemq.camel.component.ActiveMQComponent">
> >         <property name="connectionFactory" ref="jmsConnectionFactory" />
> >         <property name="transacted" value="true" />
> >         <property name="transactionManager" ref="jmsTransactionManager"/>
> >         <property name="configuration" ref="jmsConfig" />
> > </bean>
> >
> > <bean id="jmsTransactionManager"
> > class="org.springframework.jms.connection.JmsTransactionManager">
> >         <property name="connectionFactory" ref="jmsConnectionFactory" />
> > </bean>
> >
> > <bean id="shutdown" class="org.apache.camel.impl.
> DefaultShutdownStrategy">
> >         <property name="timeout" value="30" />
> > </bean>
> >
> > <bean id="jmsConnectionFactory"
> > class="org.apache.activemq.ActiveMQConnectionFactory">
> >         <property name="brokerURL" value="${activemq.broker.url}" />
> >         <property name="userName" value="${activemq.user}" />
> >         <property name="password" value="${activemq.password}" />
> >         <property name="watchTopicAdvisories" value="false" />
> > </bean>
> >
> > <bean id="pooledConnectionFactory"
> > class="org.apache.activemq.pool.PooledConnectionFactory"
> > init-method="start"
> > destroy-method="stop">
> >         <property name="maxConnections" value="2" />
> >         <property name="connectionFactory" ref="jmsConnectionFactory" />
> > </bean>
> >
> > <bean id="jmsConfig"
> > class="org.apache.camel.component.jms.JmsConfiguration">
> >         <property name="connectionFactory" ref="pooledConnectionFactory"
> />
> >         <property name="transacted" value="true" />
> >         <property name="concurrentConsumers" value="1" />
> >         <property name="deliveryPersistent" value="true" />
> >         <property name="requestTimeout" value="10000" />
> >         <property name="cacheLevelName"  value="CACHE_CONSUMER" />
> > </bean>
> >
> >
> >
> > --
> > View this message in context: http://camel.465427.n5.nabble.
> > com/activemq-store-percent-is-very-high-tp5801821.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
> >
>

Re: activemq store percent is very high

Posted by Taariq Levack <ta...@gmail.com>.
Hi
This is really an activemq question, but the short answer is to clear the
DLQ periodically.

Cheers

On 05 Jun 2017 09:54, "tnk" <ju...@gmail.com> wrote:

> Hi,
>
>  i have simple camel route, which reads from activemq queue and sends email
> messages, if exception occurs message is moved to dead letter queue. The
> problem is, store percent usage is very high. 10 messages in DLQ consumes
> 30% store (limit for storage is 1 gb), it is ~30mb for one message, but the
> message is really small (about 250 text characters in the body).
>
> Any ideas why and how to fix this?
>
> Using servicemix v5.3.1, camel v2.13.3, active mq 5.10.0. CentOS 6.6.
>
> camel context:
> <camelContext id="email-camel-context"
> xmlns="http://camel.apache.org/schema/spring">
>
>         <endpoint id="smtpEndpoint"
> uri="smtp://${smtp.host}:${smtp.port}?from=${from.email}&
> amp;contentType=${content.type}"
> />
>
>         <camel:route id="email-sending-route" errorHandlerRef="
> mailErrorHandler">
>                 <camel:from uri="amq:queue:email.outgoing?disableReplyTo=true"
> />
>                 <camel:transacted ref="requires_new" />
>                 <camel:setExchangePattern pattern="InOnly" />
>                 <camel:removeHeaders pattern="JMS*" />
>                 <log message="Sending email message to ${header.to}"
> loggingLevel="INFO"
> logName="log.integration.email"/>
>
>                 <camel:doTry>
>                         <camel:to ref="smtpEndpoint" />
>                         <camel:doCatch>
>                                 <camel:exception>java.lang.
> Exception</camel:exception>
>                                 <camel:handled><camel:
> constant>false</camel:constant></camel:handled>
>                                 <log message="Sending email message to ${
> header.to} FAILED."
> loggingLevel="ERROR" logName="log.integration.email"/>
>                                 <camel:rollback markRollbackOnly="true" />
>                         </camel:doCatch>
>                 </camel:doTry>
>         </camel:route>
> </camelContext>
>
> <bean id="mailErrorHandler"
> class="org.apache.camel.builder.DeadLetterChannelBuilder">
>         <property name="deadLetterUri" value="jms:queue:email.outgoing.dlq"
> />
>         <property name="redeliveryPolicy" ref="emailRedeliveryConfig" />
> </bean>
>
> <bean id="emailRedeliveryConfig"
> class="org.apache.camel.processor.RedeliveryPolicy">
>         <property name="maximumRedeliveries" value="3"/>
>         <property name="redeliveryDelay" value="5000"/>
> </bean>
>
> <bean id="requires_new"
> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>         <property name="transactionManager" ref="jmsTransactionManager" />
>         <property name="propagationBehaviorName"
> value="PROPAGATION_REQUIRES_NEW"
> />
> </bean>
>
> <bean id="amq"
> class="org.apache.activemq.camel.component.ActiveMQComponent">
>         <property name="connectionFactory" ref="jmsConnectionFactory" />
>         <property name="transacted" value="true" />
>         <property name="transactionManager" ref="jmsTransactionManager"/>
>         <property name="configuration" ref="jmsConfig" />
> </bean>
>
> <bean id="jmsTransactionManager"
> class="org.springframework.jms.connection.JmsTransactionManager">
>         <property name="connectionFactory" ref="jmsConnectionFactory" />
> </bean>
>
> <bean id="shutdown" class="org.apache.camel.impl.DefaultShutdownStrategy">
>         <property name="timeout" value="30" />
> </bean>
>
> <bean id="jmsConnectionFactory"
> class="org.apache.activemq.ActiveMQConnectionFactory">
>         <property name="brokerURL" value="${activemq.broker.url}" />
>         <property name="userName" value="${activemq.user}" />
>         <property name="password" value="${activemq.password}" />
>         <property name="watchTopicAdvisories" value="false" />
> </bean>
>
> <bean id="pooledConnectionFactory"
> class="org.apache.activemq.pool.PooledConnectionFactory"
> init-method="start"
> destroy-method="stop">
>         <property name="maxConnections" value="2" />
>         <property name="connectionFactory" ref="jmsConnectionFactory" />
> </bean>
>
> <bean id="jmsConfig"
> class="org.apache.camel.component.jms.JmsConfiguration">
>         <property name="connectionFactory" ref="pooledConnectionFactory" />
>         <property name="transacted" value="true" />
>         <property name="concurrentConsumers" value="1" />
>         <property name="deliveryPersistent" value="true" />
>         <property name="requestTimeout" value="10000" />
>         <property name="cacheLevelName"  value="CACHE_CONSUMER" />
> </bean>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.
> com/activemq-store-percent-is-very-high-tp5801821.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>