Hi,

I'm currently working on a project which uses AMQ to implement
fire-and-forget scenarios.


The producer sends a persistent message to the broker, a transactional
consumer which is configured with maximumRedeliveries = -1 processes the
message.

If the listener attached to the consumer encounters an issue during
processing of the message, it will throw the exception up and the same
message is processed over and over again until success.

When a message is not successfully processed within a certain interval x
(e.g. 1h),  an alert should be issued to the operations department. When the
same message does get processed successfully a bit later (e.g. 0,5h later)
the same alert should be closed.  

Our thinking was that we would periodically interrogate the broker to give
us 'the time spent in broker' of the oldest message for the various queues. 


After having reviewed the documentation and done some quick tests, I'm not
sure how to get that information out in a reliable way using out-of-the-box
AMQ features. 

I read some articles which advise browsing the message on the queue via JMS
and looking at the JMSTimestamp to calculate the interval. However during
the time that the transactional consumer is retrying the message it's not
visible to the JMS browser at that time, is it ? 

In our opinion this approach could lead to some false negatives where the
jms browser doesn't see a  message on a queue (as it is being processed),
hence doesn't issue the alert to operations.  Depending on how the browser
and consumer threads line up we could see behaviour where the alert is
opened / closed / opened.... and so on.


Before looking at other alternatives I was hoping somebody could tell me
whether our assumptions are correct ? and if so what possible solutions
exist to deal with this issue.


Thanks


Kristof



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Reliably-calculate-time-spent-in-broker-tp4669606.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to