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: http://activemq.2283324.n4.nabble.com/Is-it-possible-to-dispatch-a-message-in-the-topic-to-only-a-certain-queues-while-using-virtual-topic-tp4672622.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.