Hi Colin,

the most straightforward way to do this is to ensure that the time to live is always set. As you don't control all the producers - add a BrokerPlugin to always set the time to live - see
http://activemq.apache.org/interceptors.html

I'd recommend looking at the code for the TimeStampBrokerPlugin - 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/TimeStampingBrokerPlugin.java?view=markup

as a place to start

cheers,

Rob

Rob Davies
http://fusesource.com
http://rajdavies.blogspot.com/

On 24 Feb 2009, at 23:20, ColinStefani wrote:


Gary,

I have a related question after reading the blog post and the wiki about the
various store settings. My application keeps running in to these store
issues, as we're sending almost 100% NON-persistent messages, yet we have some messages which will never be consumed. I do not control all of the producers and thus some producers send messages with no expiration value.

So I have queue A which effectively over time "fills" up with messages and
only 1/3 of them are consumed because they're the ones we care about,
however we want to just dump the other 2/3 of them without consuming them or having to even know they're there. Most importantly I do NOT want to throw an exception to the consumers or producers as the most current messages that pass the consumers JMS message filter statement are more important than any of the older messages sitting around. (kind of the opposite of the blog post
scenario).

So how can I ensure that we'll dumping the old to keep the "new" valid? I'd like it to almost be a situation where the newest messages just push the old ones out to make room instead of the broker grinding to a halt as it does today waiting the old ones to get consumed. Since I don't have control over
the producer, is there's a way to set this by policy on the queue?

We've experienced very similar slow down to stops like Richard has, albeit
under slightly different circumstances.

Best Regards

Colin



Gary Tully wrote:

Hi Richard,
There is a caveat with disk usage and the default store. Space in the
store is reclaimed by deleting unreferenced data files during cleanup.
However, if the store consists of a single data file, it will not be
reclaimed as the single data file will always be referenced.
Thus it is necessary to configure a maximumFileLength for the store
that is less than half of the system usage store limit. In this way,
at least 2 data files will be used by the store and when sufficient
messages have been consumes such that one of the data files is no
longer referenced, the store usage will decrease when it is reclaimed
after cleanup.
There is a good description of using the usage manager in this way
along with some configuration that works at
http://open-source-adventures.blogspot.com/2009/01/limiting-disk-store-usage-with-active.html
(see this caveat mentioned at the end).

hope this helps,
Gary.

2009/2/23 Scouser <m...@gmav.demon.co.uk>:

Hiya

Thanks for that - clarified the issue nicely, but I have now found
something
odd which may be related.

If I use flow control with fairly small values for memoryLimit e.g.

<policyEntry queue="xyz.Queue" useCache="true" producerFlowControl="true"
memoryLimit="3mb">

Then if I generate a lot of messages I eventually get an exception as I
would expect:

javax.jms.ResourceAllocationException: SystemUsage memory limit reached

At this point, producers can only write to the queue as space is freed up
by
by consumers so this works as I would expect. However, if I use a larger
memoryLimit value and get an exception when I run out of storage:

javax.jms.ResourceAllocationException: Usage Manager Store is Full

then the producers seem to hang even if the pending messages are
consumed.
That is, they always generate a 'Usage Manager Store is Full' exception
even
if all the message have been consumed.  I have also noticed that the
'Store
percent used' value in the Admin application never drops once it has got
to
100%

Any thoughts?

Cheers

Richard





Dejan Bosanac wrote:

Hi,

you have set "store usage" in your activemq.xml and set it to fail if
there
is no more space. I just put up a section describing this behavior

http://cwiki.apache.org/confluence/display/ACTIVEMQ/Producer+Flow+Control#ProducerFlowControl-Systemusage

Cheers
--
Dejan Bosanac

Open Source Integration - http://fusesource.com/
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


On Sun, Feb 22, 2009 at 3:52 PM, Scouser <m...@gmav.demon.co.uk> wrote:


I'm fairly new to activeMQ and have become stuck on an error. I don't
seem
to be able to find much out about the root cause.  I have a small
example
which send messages to a couple of queues and reads the messages out.
I'm
using Spring's JMS template etc to do most of the hard work.
 Eventually
I
get the following crash:
...
SEVERE: Usage Manager Store is Full; nested exception is
javax.jms.ResourceAllocationException: Usage Manager Store is Full
org.springframework.jms.ResourceAllocationException: Usage Manager
Store
is
Full; nested exception is javax.jms.ResourceAllocationException: Usage
Manager Store is Full
       at

org .springframework .jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:298)
       at

org .springframework .jms .support.JmsAccessor.convertJmsAccessException(JmsAccessor.java: 168)
       at
org .springframework.jms.core.JmsTemplate.execute(JmsTemplate.java: 474)

...
Caused by: javax.jms.ResourceAllocationException: Usage Manager Store
is
Full
       at
org.apache.activemq.broker.region.Queue.doMessageSend(Queue.java: 430) at org.apache.activemq.broker.region.Queue.send(Queue.java:417)
       at

org .apache .activemq.broker.region.AbstractRegion.send(AbstractRegion.java: 354)
...

So, what is the 'Usage Manager' ?, any ideas what I may have done
wrong?,
any and all help appreciated!


--
View this message in context:
http://www.nabble.com/Usage-Manager-Store-is-Full---Root-Cause--tp22147570p22147570.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.




-----
Dejan Bosanac

Open Source Integration - http://fusesource.com/
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


--
View this message in context:
http://www.nabble.com/Usage-Manager-Store-is-Full---Root-Cause--tp22147570p22172029.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.





--
http://blog.garytully.com

Open Source SOA
http://FUSESource.com



--
View this message in context: 
http://www.nabble.com/Usage-Manager-Store-is-Full---Root-Cause--tp22147570p22192964.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.













Reply via email to