activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From SBenj <sbenja...@yahoo.com>
Subject Re: Dynamic Queue Creation
Date Tue, 08 May 2007 17:04:45 GMT

Thanks much for the explanations.

I've tried to backtrack the exploration process I went through to recreate
the stack trace without success. I can tell you it was in the process of
trying to create a Topic in the code to subscribe to from a virtualQueue.
Sorry I can't be more specific.



James.Strachan wrote:
> 
> On 5/8/07, SBenj <sbenjamis@yahoo.com> wrote:
>>
>> (MQ 4.1, Java 1.6, Redhat)
>> I have a question regarding Queues and Topics as their use relates to our
>> business case. We have a few hundred clients, each of whom will need to
>> subscribe to their own "mailbox". New clients are continually created
>> every
>> few days (they're remote business sites) and generally don't go away,
>> although the sites may go offline now and again. Messges come in in a
>> continuous stream for the clients, often before the client itself becomes
>> live.
>>
>> We'd like to bring up each clients mailbox when a message comes in for
>> them,
>> or when the site comes live and requests messages. It seems like there
>> are a
>> number of ways to model this with MQ, each of which seems to be
>> problematic:
>>
>> 1. Durable Subscribers - each site becomes a subscriber to it's own
>> topic.
>> This works fine, except that the topic will not hold any messages before
>> the
>> client goes live for the first time and registers itself as a durable
>> subscriber.
>>
>> 2. Queues - Message comes in for an unknown client, we create a queue for
>> it
>> on the fly. This seems to work. However (quoting from the sun j2ee
>> javadoc
>> for session.createQueue:
>> createQueue
>>    " This facility is provided for the rare cases where clients need to
>> dynamically manipulate queue identity. It allows the creation of a queue
>> identity with a provider-specific name. Clients that depend on this
>> ability
>> are not portable.
>>
>>     Note that this method is not for creating the physical queue. The
>> physical creation of queues is an administrative task and is not to be
>> initiated by the JMS API. The one exception is the creation of temporary
>> queues, which is accomplished with the createTemporaryQueue method. "
>> Any ideas on why this is a concern?
> 
> It might not work on some providers - but on the good ones its fine :)
> 
> 
>> 3. VirtualTopics - This seems to create class cast errors in ActiveMQ -
>> i.e.
>> when trying to create a durable subscriber for a virtual topic, activemq
>> seems to be trying to cast to a queue.
> 
> Got a stack trace?
> 
>> 4. MessageSelectors - I suppose we could dump everything into a large
>> queue
>> and have a selector for each client, but this would require each message
>> to
>> be examined by hundreds of clients, worst case.
> 
> Not quite, the broker implements selectors so clients will only get
> messages which match their selector
> 
>>  (2) seems to do exactly what we want, but there's that scary message
>> from
>> sun. Any help on the above would be most appreciated. Thanks.
> 
> If you are using ActiveMQ then you can ignore Sun's scary messages;
> creating queues dynamically is lightweight, fast and totally
> supported.
> 
> BTW for clients which come online, its typical to use temporary
> queues; which can be easily created on startup and have the benefit of
> being destroyed when the client goes offline. So it mostly depends on
> what semantics you want; do you want to persist messages across client
> disconnects (if so use a regular queue) or not (use a temporary
> queue).
> 
> 
> -- 
> James
> -------
> http://macstrac.blogspot.com/
> 
> 

-- 
View this message in context: http://www.nabble.com/Dynamic-Queue-Creation-tf3710227s2354.html#a10379763
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message