You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by ashoknan <as...@chase.com> on 2009/03/24 22:16:38 UTC

How to discard messages for the non-durable queue

I am using ActiveMQ 5.1..wanted to know how to discard messages for the
non-durable queue.
Trying to deal with slow consumer problem...Wanted to avoid Broker reaching
100%. When ever broker reaches 100% on the memory, everything stops.

Will discarding will avoid broker reaching 100% on the memory.

When the broker reaches 100% this what i see in the threaddump

"Thread-4" prio=6 tid=0x3e20d400 nid=0x128c waiting on condition
[0x3ec0f000..0x3ec0fa94]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x0b278ff8> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
	at
java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317)
	at
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
	at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
	at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1195)
	at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1644)
	- locked <0x06be2688> (a java.lang.Object)
	at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:227)
	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:74)
	- locked <0x06be1008> (a org.apache.activemq.ActiveMQMessageProducer)
	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:59)
	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:534)
	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:511)
	at org.springframework.jms.core.JmsTemplate$2.doInJms(JmsTemplate.java:477)
	at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:475)
	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:467)
	at jmsexample.ExampleProducer.sendMessage(ExampleProducer.java:21)
	at jmsexample.Bootstrap$1.run(Bootstrap.java:49)
	at java.lang.Thread.run(Thread.java:619)






-- 
View this message in context: http://www.nabble.com/How-to-discard-messages-for-the-non-durable-queue-tp22689964p22689964.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: How to discard messages for the non-durable queue

Posted by ashoknan <as...@chase.com>.
Yes i tried that.

But it's going to ActiveMQ DLQ. How the messages from DLQ will be removed.
Do i have to write something to clear the DLQ.

Another thing i noticed is..when i set prefetch as 10 broker was able to
dispatch 2Million messages after that the broker memory % used reaching 100
then it hangs...when i set prefetch to 100 then i dont have any problem..it
was able to process 11M messages with out any issues. I am not sure why this
is the case.


		

		
		
			
				
					" producerFlowControl="true">
					
				
			
		

		
		
			
				
					
				
			
		

		
			
		
	






Andreas Gies-3 wrote:
> 
> Hi there
> 
> have you considered to set a time to live on your messages.
> If you send messages NON_PERSISTENT that should work.
> If you send PERSISTENT messages, you should probably configure the  
> DiscardingDLQBrokerPlugin as well.
> 
> 
> Best regards
> Andreas
> 
> On Mar 24, 2009, at 10:16 PM, ashoknan wrote:
> 
>>
>> I am using ActiveMQ 5.1..wanted to know how to discard messages for  
>> the
>> non-durable queue.
>> Trying to deal with slow consumer problem...Wanted to avoid Broker  
>> reaching
>> 100%. When ever broker reaches 100% on the memory, everything stops.
>>
>> Will discarding will avoid broker reaching 100% on the memory.
>>
>> When the broker reaches 100% this what i see in the threaddump
>>
>> "Thread-4" prio=6 tid=0x3e20d400 nid=0x128c waiting on condition
>> [0x3ec0f000..0x3ec0fa94]
>>   java.lang.Thread.State: WAITING (parking)
>> 	at sun.misc.Unsafe.park(Native Method)
>> 	- parking to wait for  <0x0b278ff8> (a
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
>> 	at
>> java.util.concurrent.locks.AbstractQueuedSynchronizer 
>> $ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
>> 	at
>> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java: 
>> 317)
>> 	at
>> org 
>> .apache 
>> .activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
>> 	at
>> org 
>> .apache 
>> .activemq 
>> .transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
>> 	at
>> org 
>> .apache 
>> .activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java: 
>> 1195)
>> 	at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java: 
>> 1644)
>> 	- locked <0x06be2688> (a java.lang.Object)
>> 	at
>> org 
>> .apache 
>> .activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java: 
>> 227)
>> 	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java: 
>> 74)
>> 	- locked <0x06be1008> (a org.apache.activemq.ActiveMQMessageProducer)
>> 	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java: 
>> 59)
>> 	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java: 
>> 534)
>> 	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java: 
>> 511)
>> 	at org.springframework.jms.core.JmsTemplate 
>> $2.doInJms(JmsTemplate.java:477)
>> 	at  
>> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
>> 	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java: 
>> 475)
>> 	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java: 
>> 467)
>> 	at jmsexample.ExampleProducer.sendMessage(ExampleProducer.java:21)
>> 	at jmsexample.Bootstrap$1.run(Bootstrap.java:49)
>> 	at java.lang.Thread.run(Thread.java:619)
>>
>>
>>
>>
>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/How-to-discard-messages-for-the-non-durable-queue-tp22689964p22689964.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
> 
> ---
> Mit freundlichen Grüssen - Kind Regards
> Andreas Gies
> Principal Consultant
> Open Source Center of Competence
> 
> Progress Software GmbH
> Agrippinawerft 26
> 50678 Köln
> 
> E-Mail      	agies@progress.com
> Direct Line 	+49 (0)9953 980349
> Mobile      	+49 (0)170 5759611
> Skype        	+44 (0)20 3239 2922
> Skype       	+353 (0)1 443 4971
> Skype       	+1 (0)781 262 0168
> 
> http://www.progress.com
> http://fusesource.com
> http://open-source-adventures.blogspot.com
> 
> 
> 
> -------------------------------------------------------
> Progress Software GmbH
> Sitz der Gesellschaft: Agrippinawerft 26, 50678 Koeln;
> Niederlassung: Fuerstenrieder Str. 279, 81377 Muenchen
> Amtsgericht Koeln, HRB 15620;
> Geschaeftsfuehrung: David Ireland
> -------------------------------------------------------
> 
> 

-- 
View this message in context: http://www.nabble.com/How-to-discard-messages-for-the-non-durable-queue-tp22689964p22710450.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Re: How to discard messages for the non-durable queue

Posted by Andreas Gies <ag...@progress.com>.
Hi there

have you considered to set a time to live on your messages.
If you send messages NON_PERSISTENT that should work.
If you send PERSISTENT messages, you should probably configure the  
DiscardingDLQBrokerPlugin as well.


Best regards
Andreas

On Mar 24, 2009, at 10:16 PM, ashoknan wrote:

>
> I am using ActiveMQ 5.1..wanted to know how to discard messages for  
> the
> non-durable queue.
> Trying to deal with slow consumer problem...Wanted to avoid Broker  
> reaching
> 100%. When ever broker reaches 100% on the memory, everything stops.
>
> Will discarding will avoid broker reaching 100% on the memory.
>
> When the broker reaches 100% this what i see in the threaddump
>
> "Thread-4" prio=6 tid=0x3e20d400 nid=0x128c waiting on condition
> [0x3ec0f000..0x3ec0fa94]
>   java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <0x0b278ff8> (a
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at
> java.util.concurrent.locks.AbstractQueuedSynchronizer 
> $ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
> 	at
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java: 
> 317)
> 	at
> org 
> .apache 
> .activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> 	at
> org 
> .apache 
> .activemq 
> .transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
> 	at
> org 
> .apache 
> .activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java: 
> 1195)
> 	at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java: 
> 1644)
> 	- locked <0x06be2688> (a java.lang.Object)
> 	at
> org 
> .apache 
> .activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java: 
> 227)
> 	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java: 
> 74)
> 	- locked <0x06be1008> (a org.apache.activemq.ActiveMQMessageProducer)
> 	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java: 
> 59)
> 	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java: 
> 534)
> 	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java: 
> 511)
> 	at org.springframework.jms.core.JmsTemplate 
> $2.doInJms(JmsTemplate.java:477)
> 	at  
> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
> 	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java: 
> 475)
> 	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java: 
> 467)
> 	at jmsexample.ExampleProducer.sendMessage(ExampleProducer.java:21)
> 	at jmsexample.Bootstrap$1.run(Bootstrap.java:49)
> 	at java.lang.Thread.run(Thread.java:619)
>
>
>
>
>
>
> -- 
> View this message in context: http://www.nabble.com/How-to-discard-messages-for-the-non-durable-queue-tp22689964p22689964.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>

---
Mit freundlichen Grüssen - Kind Regards
Andreas Gies
Principal Consultant
Open Source Center of Competence

Progress Software GmbH
Agrippinawerft 26
50678 Köln

E-Mail      	agies@progress.com
Direct Line 	+49 (0)9953 980349
Mobile      	+49 (0)170 5759611
Skype        	+44 (0)20 3239 2922
Skype       	+353 (0)1 443 4971
Skype       	+1 (0)781 262 0168

http://www.progress.com
http://fusesource.com
http://open-source-adventures.blogspot.com



-------------------------------------------------------
Progress Software GmbH
Sitz der Gesellschaft: Agrippinawerft 26, 50678 Koeln;
Niederlassung: Fuerstenrieder Str. 279, 81377 Muenchen
Amtsgericht Koeln, HRB 15620; 
Geschaeftsfuehrung: David Ireland
-------------------------------------------------------

Re: How to discard messages for the non-durable queue

Posted by pclovec <pc...@gmail.com>.
Actual the discard function doesn't work. you also can refer to this post
http://www.nabble.com/Fast-producers%2Cslow-consumer...-queue-growing-forever-td22373306.html






ashoknan wrote:
> 
> I am using ActiveMQ 5.1..wanted to know how to discard messages for the
> non-durable queue.
> Trying to deal with slow consumer problem...Wanted to avoid Broker
> reaching 100%. When ever broker reaches 100% on the memory, everything
> stops.
> 
> Will discarding will avoid broker reaching 100% on the memory.
> 
> When the broker reaches 100% this what i see in the threaddump
> 
> "Thread-4" prio=6 tid=0x3e20d400 nid=0x128c waiting on condition
> [0x3ec0f000..0x3ec0fa94]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <0x0b278ff8> (a
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
> 	at
> java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317)
> 	at
> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> 	at
> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
> 	at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1195)
> 	at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1644)
> 	- locked <0x06be2688> (a java.lang.Object)
> 	at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:227)
> 	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:74)
> 	- locked <0x06be1008> (a org.apache.activemq.ActiveMQMessageProducer)
> 	at org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:59)
> 	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:534)
> 	at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:511)
> 	at
> org.springframework.jms.core.JmsTemplate$2.doInJms(JmsTemplate.java:477)
> 	at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
> 	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:475)
> 	at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:467)
> 	at jmsexample.ExampleProducer.sendMessage(ExampleProducer.java:21)
> 	at jmsexample.Bootstrap$1.run(Bootstrap.java:49)
> 	at java.lang.Thread.run(Thread.java:619)
> 
> 
> 
> 
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/How-to-discard-messages-for-the-non-durable-queue-tp22689964p22709581.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.