activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sven Vintges <>
Subject Re: Virtual Topic and missed messages gone missing with selectorAware=true
Date Mon, 01 Nov 2010 12:16:54 GMT
 Perhaps a work-around would be to create a garbage-service. Ie. a 
 services that pops off all messages not needed by the consumer to 
 /dev/null? Though you probably don't know which messages are not needed 
 by the subscriber since you don't know which subscribers you will 
 have... Perhaps you could create an algorithm that does something like 
 "if the consumer is up and the message is older than xxx time" pop it 

 On Mon, 1 Nov 2010 10:25:40 +0000, "Maciej Rakowicz" 
 <> wrote:
> in case of selectorAware=true and consumer down, what happens to
> those  messages? are they discarded? Is there anything sent to one of
> the  advisories? I can't seem to find it anywhere.
> On 1 Nov 2010, at 09:48, Maciej Rakowicz wrote:
>> I guess, only if we keep downtimes short enough so 'matched'  
>> messages don't expire and big enough maxPageSize or something to  keep 
>> matched messages consumed.
>> Does anyone know if this (i.e. AMQ-3004) is going to be worked on in 
>> the near future?
>> m.
>> On 1 Nov 2010, at 09:32, Gary Tully wrote:
>>> Message expiry may help in the short term, set a time to live on 
>>> the
>>> messages such that the built up unmatched messages expire and are
>>> removed.
>>> On 1 November 2010 09:20, Maciej Rakowicz <>  
>>> wrote:
>>>> All,
>>>> amq 5.4.0. jdk 1.6
>>>> Scenario:
>>>> broker persistence=true, selectorAware=false
>>>> Virtual Topic with say one queue. There is a consumer A connected  
>>>> to that
>>>> queue with a selector. All works fine. Consumer A dies, messages  
>>>> pile up,
>>>> consumer A starts back up, missed messages are redelivered. You  
>>>> can easily
>>>> verify that queue receives all posted messages while consumer's  
>>>> down.
>>>> Now, adding consumer B, since selectorAware=false and consumer B  
>>>> uses an
>>>> exclusive selector messages sent to consumer A are not consumed by 
>>>> consumer
>>>> B. All good save the fact that all unmatched messages end up  
>>>> polluting
>>>> consumer's B queue. All according to the documentation.
>>>> Flipping selectorAware to true solves one problem but introduces  
>>>> another
>>>> (way more important in my setup). Unmatched messages won't pile up 
>>>> on
>>>> consumer's B queue which is fine. However, if consumer A dies they 
>>>> are not
>>>> sent to consumer's A queue (disappearing after reaching the topic  
>>>> - I dunno
>>>> where they go) hence disabling any missed message delivery on  
>>>> consumer's A
>>>> startup.
>>>> I there any way around it? I really need to handle all missed  
>>>> messages with
>>>> no exception. At the same time I cannot allow stacking up messages 
>>>> in each
>>>> and every queue although they are not matched.
>>>> Btw. I do not have a list of consumers in advance, the  
>>>> subscription is fully
>>>> dynamic, although since broker runs persistence, once subscribed I 
>>>> do have
>>>> an idea of who's subscribed even if connection is currently down.
>>>> I would appreciate any hints.
>>>> mac
>>> --

View raw message