Rob - that is actually what I was thinking :)
What I normally do is 

1 - Use camel - Unless there is a specific use-case for batching / TX most 
modern systems tend to be record oriented.
   1.5 - If you need by record and ordering you are doing something wrong :)
2 - Separate connectionFactories and rely on the beauty of NIO in AMQ.
    2.1 - Don't use PooledConnectionFactory for both listening and producing, 
it'll just give you migraines.
3 - Look at the specific use-case, is this volume or size or both - That'll 
lead to concurrent consuming and prefetch.
4 - Most likely since this is 1.4 J2EE compatible, disable compression, wire 
changes, whatnot else.
5 - Make your request reply happen in two different Executors, with two 
separate runnables, respect the Correlation ID
    5.1 - You can use one queue. 
    5.2 - If you use temp destinations, use the correlation and keep the queue 
(You get cleanup for free).

Look at volume produced vs. consumed. - What is a Request reply actually in 
terms of work?
That last one is hard, that is the key to scaling systems as you left the world 
of 

Person findPerson(Number id);

(You can infer british rock here.)

Just some ideas of the top of my head...



On Oct 9, 2013, at 11:14 PM, Johan Edstrom <seij...@gmail.com> wrote:

> As Rob pointed out, there are several solutions to this, the simplest one 
> being as in the old joke, Dr, it hurts when I do this. - Don't do it?
> 
> You could achieve the same thing with one queue and selectors - *which could 
> run CPU up*
> You could use a temp queue per processing unit and handle a lot of messages 
> (This is nice for pub/sub)
> You could use one queue and a bit of instanceof code (It looks a bit crufty 
> but it is very functional)
> 
> 
> On Oct 9, 2013, at 11:05 PM, Robert Davies <rajdav...@gmail.com> wrote:
> 
>> What you have described is a bit of an anti-pattern - there's some 
>> guidelines here in the faq: 
>> http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html
>> Its an anti-pattern because there is a lot of broker side over head with 
>> creating temporary destinations and consumers (as you are seeing). 
>> However, for your case you probably need to enable GC on destinations - see 
>> http://activemq.apache.org/delete-inactive-destinations.html
>> 
>> On 10 Oct 2013, at 05:11, javaG <zenma...@gmail.com> wrote:
>> 
>>> 
>>> In my application, I use request-reply by creating temp queue and creating a
>>> new replyConsumer for each message to use replyConsumer.poll() method to get
>>> reply back. After getting reply I close the replyConsumer. Messaging works
>>> fine but each time a message is sent a topic
>>> ActiveMQ.Advisory.Consumer.Queue.ID:xxxxxxxxxxxxxx is created and remains
>>> there. So if millions of messages are sent millions of rows will be created
>>> in the ActiveMQ web console for topics.  I tried to disable advisories
>>> message to solve this problem but then request-reply does not work anymore
>>> as it throws exceptions like Cannot publish to a deleted destination. So I
>>> am stuck. Any one has a solution?
>>> 
>>> Thanks
>>> 
>>> 
>>> 
>>> 
>>> 
>>> --
>>> View this message in context: 
>>> http://activemq.2283324.n4.nabble.com/Too-many-advisories-topics-created-in-ActiveMQ-tp4672501.html
>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>> 
> 

Reply via email to