activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Johan Edstrom <seij...@gmail.com>
Subject Re: Too many advisories topics created in ActiveMQ
Date Thu, 10 Oct 2013 05:30:31 GMT
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 <seijoed@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 <rajdavies@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 <zenmatix@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.
>> 
> 


Mime
View raw message