You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by DominicTulley <do...@telelogic.com> on 2007/08/30 12:12:16 UTC

How can I find messages that have been unconsumed for "too long"?

Is there a way, either with filters or timeouts on queues, to get my hands on
any messages that have been sitting in the queue for "too long"?

My situtation/plan is to have a queue with multiple consumers.  Each
consumer will be using a selector to decide which messages to consume. 
Under ideal circumstances, all messages will have a consumer that wants
them, but situations can arise where a message doesn't match any selector. 
I would like to have some mechanism whereby I can spot that the message is
at the "front" of the queue but after n seconds still hasn't been consumed. 
This allows me to arrange for a consumer to start dealing with that
particular message type.

I looked at the JSMExpiration header which sounded about right, except that
on expiry the outcome is to destroy the message.  I would love to be able to
ask the expiry processing to simply forward the message to another queue,
for instance.

I appreciate any suggestions.

Thanks,

-Dominic
-- 
View this message in context: http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12404218
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: How can I find messages that have been unconsumed for "too long"?

Posted by David Budworth <db...@gmail.com>.
Possibly you could just create consumers where effectively (not real code):
sendTime < now() - 10min

and just create a new consumer, receive until there's nothing left, then try
again a minute later.

you'd be able to yank from one queue and re-publish to another.  I'd bet you
could do this with camel and not even have to write code really.

just need a properly formed "expiration selector", and pipe the result to
the new queue.




On 8/30/07, ttmdev <jo...@ttmsolutions.com> wrote:
>
>
> If all else fails, you can perhaps use a QueueBrowser to monitor the
> messages
> on the queue.
>
> ttmdev
>
>
> DominicTulley wrote:
> >
> > That was my first expectation - that they would go to the DLQ but they
> > never appeared to go there.  Perhaps the bug you mention is the reason.
> > Having found this behaviour I went and did some searching - the outcome
> > was that it sounded like brokers were expected to destroy the expired
> > messages.
> >
> > I'll have a look at AMQ-1112.  Perhaps it's been fixed and I can get the
> > latest snapshot and try again.
> >
> > Thanks,
> >
> > -Dominic
> >
> > Mario Siegenthaler-2 wrote:
> >>
> >> AFAIK the expired message will be moved into the DeadLetterQueue.
> >> Since you're able to configure the DLQ it should be possible to do
> >> what you want (using AMQ5).
> >> There's an open issue with expired message not being processed until
> >> someone tries to consume them (The bug was AMQ-1112 I think). So since
> >> your using selectors on the queue I'm not sure whether this applies or
> >> not. I'd just give it a try.
> >>
> >> Mario
> >>
> >> On 8/30/07, DominicTulley <do...@telelogic.com> wrote:
> >>>
> >>> Is there a way, either with filters or timeouts on queues, to get my
> >>> hands on
> >>> any messages that have been sitting in the queue for "too long"?
> >>>
> >>> My situtation/plan is to have a queue with multiple consumers.  Each
> >>> consumer will be using a selector to decide which messages to consume.
> >>> Under ideal circumstances, all messages will have a consumer that
> wants
> >>> them, but situations can arise where a message doesn't match any
> >>> selector.
> >>> I would like to have some mechanism whereby I can spot that the
> message
> >>> is
> >>> at the "front" of the queue but after n seconds still hasn't been
> >>> consumed.
> >>> This allows me to arrange for a consumer to start dealing with that
> >>> particular message type.
> >>>
> >>> I looked at the JSMExpiration header which sounded about right, except
> >>> that
> >>> on expiry the outcome is to destroy the message.  I would love to be
> >>> able to
> >>> ask the expiry processing to simply forward the message to another
> >>> queue,
> >>> for instance.
> >>>
> >>> I appreciate any suggestions.
> >>>
> >>> Thanks,
> >>>
> >>> -Dominic
> >>> --
> >>> View this message in context:
> >>>
> http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12404218
> >>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> >>>
> >>>
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12409934
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>

Re: How can I find messages that have been unconsumed for "too long"?

Posted by ttmdev <jo...@ttmsolutions.com>.
If all else fails, you can perhaps use a QueueBrowser to monitor the messages
on the queue. 

ttmdev


DominicTulley wrote:
> 
> That was my first expectation - that they would go to the DLQ but they
> never appeared to go there.  Perhaps the bug you mention is the reason. 
> Having found this behaviour I went and did some searching - the outcome
> was that it sounded like brokers were expected to destroy the expired
> messages.
> 
> I'll have a look at AMQ-1112.  Perhaps it's been fixed and I can get the
> latest snapshot and try again.
> 
> Thanks,
> 
> -Dominic
> 
> Mario Siegenthaler-2 wrote:
>> 
>> AFAIK the expired message will be moved into the DeadLetterQueue.
>> Since you're able to configure the DLQ it should be possible to do
>> what you want (using AMQ5).
>> There's an open issue with expired message not being processed until
>> someone tries to consume them (The bug was AMQ-1112 I think). So since
>> your using selectors on the queue I'm not sure whether this applies or
>> not. I'd just give it a try.
>> 
>> Mario
>> 
>> On 8/30/07, DominicTulley <do...@telelogic.com> wrote:
>>>
>>> Is there a way, either with filters or timeouts on queues, to get my
>>> hands on
>>> any messages that have been sitting in the queue for "too long"?
>>>
>>> My situtation/plan is to have a queue with multiple consumers.  Each
>>> consumer will be using a selector to decide which messages to consume.
>>> Under ideal circumstances, all messages will have a consumer that wants
>>> them, but situations can arise where a message doesn't match any
>>> selector.
>>> I would like to have some mechanism whereby I can spot that the message
>>> is
>>> at the "front" of the queue but after n seconds still hasn't been
>>> consumed.
>>> This allows me to arrange for a consumer to start dealing with that
>>> particular message type.
>>>
>>> I looked at the JSMExpiration header which sounded about right, except
>>> that
>>> on expiry the outcome is to destroy the message.  I would love to be
>>> able to
>>> ask the expiry processing to simply forward the message to another
>>> queue,
>>> for instance.
>>>
>>> I appreciate any suggestions.
>>>
>>> Thanks,
>>>
>>> -Dominic
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12404218
>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12409934
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: How can I find messages that have been unconsumed for "too long"?

Posted by DominicTulley <do...@telelogic.com>.
That was my first expectation - that they would go to the DLQ but they never
appeared to go there.  Perhaps the bug you mention is the reason.  Having
found this behaviour I went and did some searching - the outcome was that it
sounded like brokers were expected to destroy the expired messages.

I'll have a look at AMQ-1112.  Perhaps it's been fixed and I can get the
latest snapshot and try again.

Thanks,

-Dominic

Mario Siegenthaler-2 wrote:
> 
> AFAIK the expired message will be moved into the DeadLetterQueue.
> Since you're able to configure the DLQ it should be possible to do
> what you want (using AMQ5).
> There's an open issue with expired message not being processed until
> someone tries to consume them (The bug was AMQ-1112 I think). So since
> your using selectors on the queue I'm not sure whether this applies or
> not. I'd just give it a try.
> 
> Mario
> 
> On 8/30/07, DominicTulley <do...@telelogic.com> wrote:
>>
>> Is there a way, either with filters or timeouts on queues, to get my
>> hands on
>> any messages that have been sitting in the queue for "too long"?
>>
>> My situtation/plan is to have a queue with multiple consumers.  Each
>> consumer will be using a selector to decide which messages to consume.
>> Under ideal circumstances, all messages will have a consumer that wants
>> them, but situations can arise where a message doesn't match any
>> selector.
>> I would like to have some mechanism whereby I can spot that the message
>> is
>> at the "front" of the queue but after n seconds still hasn't been
>> consumed.
>> This allows me to arrange for a consumer to start dealing with that
>> particular message type.
>>
>> I looked at the JSMExpiration header which sounded about right, except
>> that
>> on expiry the outcome is to destroy the message.  I would love to be able
>> to
>> ask the expiry processing to simply forward the message to another queue,
>> for instance.
>>
>> I appreciate any suggestions.
>>
>> Thanks,
>>
>> -Dominic
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12404218
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12404852
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: How can I find messages that have been unconsumed for "too long"?

Posted by keneida <ke...@o2.pl>.
When using transactions after reaching maximum redeliveries also go to that
queue. Is it possible to find out why the messege went to the DLQ? 


AFAIK the expired message will be moved into the DeadLetterQueue.
Since you're able to configure the DLQ it should be possible to do
what you want (using AMQ5).
There's an open issue with expired message not being processed until
someone tries to consume them (The bug was AMQ-1112 I think). So since
your using selectors on the queue I'm not sure whether this applies or
not. I'd just give it a try.
</qute>


-- 
View this message in context: http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12421779
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: How can I find messages that have been unconsumed for "too long"?

Posted by Mario Siegenthaler <ms...@inventsoft.ch>.
AFAIK the expired message will be moved into the DeadLetterQueue.
Since you're able to configure the DLQ it should be possible to do
what you want (using AMQ5).
There's an open issue with expired message not being processed until
someone tries to consume them (The bug was AMQ-1112 I think). So since
your using selectors on the queue I'm not sure whether this applies or
not. I'd just give it a try.

Mario

On 8/30/07, DominicTulley <do...@telelogic.com> wrote:
>
> Is there a way, either with filters or timeouts on queues, to get my hands on
> any messages that have been sitting in the queue for "too long"?
>
> My situtation/plan is to have a queue with multiple consumers.  Each
> consumer will be using a selector to decide which messages to consume.
> Under ideal circumstances, all messages will have a consumer that wants
> them, but situations can arise where a message doesn't match any selector.
> I would like to have some mechanism whereby I can spot that the message is
> at the "front" of the queue but after n seconds still hasn't been consumed.
> This allows me to arrange for a consumer to start dealing with that
> particular message type.
>
> I looked at the JSMExpiration header which sounded about right, except that
> on expiry the outcome is to destroy the message.  I would love to be able to
> ask the expiry processing to simply forward the message to another queue,
> for instance.
>
> I appreciate any suggestions.
>
> Thanks,
>
> -Dominic
> --
> View this message in context: http://www.nabble.com/How-can-I-find-messages-that-have-been-unconsumed-for-%22too-long%22--tf4353227s2354.html#a12404218
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>