Sounds like you're wanting to implement a message-level audit trail? With
Camel, you could very quickly  implement a wiretap message pattern
(http://camel.apache.org/wire-tap.html) and have the wiretap route the
tapped messages to a log4j appender. The appender's logfile could rollover
based on size and/or time. You could then write a simple MBean that is
loaded via a plugin and used to query the appender's log file. With this
approach, you'd have much more control.

You may also want to check out this Camel-based monitoring tool for
ActiveMQ. 

http://www.ttmsolutions.com/Transactional_Software_Solutions/Active_Monitor_AMon.php

Joe
http://www.ttmsolutions.com



stirlingc wrote:
> 
> Hello,
> 
> I have an architecture in which one or more message producers place
> messages in a shared queue and a consumer pool processes the messages.  
> While I can use JMX to monitor the number of messages produced and
> consumed, the messages are consumed so fast that I often can't browse them
> with JMX.
> 
> To monitor the system and debug issues, I would like to keep a
> JMX-viewable history of the most recently produced messages.  My thoughts
> were to use a composite destination so that any message placed in the
> shared queue are replicated to another queue without any consumers.
> 
> The problem is that I would like to cap the size of this historical queue,
> preferably by count (e.g., only store the last 200 messages that were
> sent).  Alternatively, I could use message time-to-live (TTL) to age the
> messages within the queue.  The problem with TTL is that it must be set by
> the message producer and would therefore impact both the shared and
> historical queues.  Ideally, I'd like to configure the composite
> destination to set the TTL only on the messages replicated to the
> historical queue.  Unfortunately, it seems like the only way to do this is
> to create a consumer for the "primary" historical queue which simply sets
> the TTL and forwards the messages to a "secondary" historical queue.
> 
> So here are my questions:
> 
> 1) Is it possible bound the queue size so that if a new message and the
> queue size is exceeded, the oldest message in the queue is
> removed/expired?  E.g., make a rollover queue that shows just the last 200
> messages sent.  I imagine this can be done with application code and a
> queue browser, but I'd prefer to achieve it with configuration.
> 
> 2) If a fixed size is not possible, can the time-to-live on a message be
> set as a property of the queue's configuration rather than the message, or
> as a property applied during resolution of a composite destination?
> 
> 3) Is there a better way to achieve my goal of creating a JMX-viewable
> bounded history of a queue's contents?
> 
> Thanks for taking the time to read this,
> Stirling
> 
> 

-- 
View this message in context: 
http://old.nabble.com/How-to-maintain-an-historical-view-of-queue-contents--tp26159890p26160156.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to