activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Pavlovich <>
Subject Re: Is it possible to dispatch a message in the topic to only a certain queues while using virtual topic?
Date Wed, 16 Oct 2013 12:59:03 GMT
A couple things to look into--

1. Set a message expiration. You'll set this when producing the message. 
2. gcInactiveDestinations  (this will garbage collect a destination if a consumer hasn't come
around for X period of time)
Hope this helps!

On Oct 10, 2013, at 9:51 PM, HellKnight <> wrote:

> I am using virtual topics but I've encountered a problem and I could not come
> up with a perfect solution , so I decide to post it and I believe you guys
> could help me .
> My use case is something like this :
>   a producer is monitoring a database.Once the database is updated, the
> producer will send a message to anyone who is concerned about data updating
> in that database, which means every message could be sent to one or more
> consumers.However, don't assume that different messages will be sent to same
> consumer groups.
>    I am using virtual topics ,so the producer just sends message to a topic
> called "VirtualTopic.AlertTopic". And as I have mentioned , there are
> multiple users in my system just like ActiveMQ forum. Every user could run a
> client program and login to the system , and the client program includes a
> consumer to receive messages.  Messages sent to the virtual topic will be
> dispatched to every queue, which means every message is actually sent to
> every consumer, I have to use a message selector in the consumer side to
> filter messages.
>   I have created a queue named as "Consumer.UserID.VirtualTopic.AlertTopic"
> for every system user. However, users will be add and removed dynamicly ,
> and I should create a queue when adding a user and removing that queue when
> removing the user from my system. If add a queue to ActiveMQ broker failed
> due to exceptions, network failures etc.Then the user himself will find that
> no message is received and he will just tell me ,so that is not a serious
> problem.  
>     However, if removing the user queue from activemq broker failed , there
> will be some trouble. The user queue still exists, and since every message
> sent to a virtual topic will be copied to every consumer queue , messages
> will accumulating in the  queue that should be removed because the system
> user who will consume that queue is removed from system managing database
> and will never login again.  
>     I've come up with two solutions:
> 1. Delete any user queue that has no active consumer for a long time , say ,
> 3 months. But this is imperfect, because it's possible that system user
> would not login for months in our system , we consider that a normal
> behaviour.
> 2. Purge a queue when it reach storage limits. This is good ,after all the
> user won't like too many messages appear on his screen after a long offline
> time.However, some users may hate this behaviour , they don't wonna miss any
> notification messages
>   I think there is an ideal way to deal with my problem. The message should
> only be dispatched to the queues of its receivers, not all the queues. Is it
> possible to do that?
> --
> View this message in context:
> Sent from the ActiveMQ - User mailing list archive at

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message