• Post Reply Bookmark Topic Watch Topic
  • New Topic

Horizontally scaling JMS listener/consumer application.....in Active MQ environment  RSS feed

 
Jeevan Sunkersett
Ranch Hand
Posts: 78
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

In the enterprise we use Active MQ, v5.3 for the messaging infrastructure.

I am integrating 2 applications.

Appl-P ...producer, publishes jms messages on a topic :: VirtualTopic.Appl-P.SomeName

And I have Appl-C...the consumer consuming the same (by directly listening on the topic :: VirtualTopic.Appl-P.SomeName

In an attempt to horizontally scale Appl-C;

I hosted Appl-C on more than 1 machine and changed it to consume off queue's created from the Virtual Topic;

Consumer.Instance-A.VirtualTopic.Appl-P.SomeName,
Consumer.Instance-B.VirtualTopic.Appl-P.SomeName and so forth

But Active-MQ delivers the same message to all the Consumer.Queue's (albeit within a short delay of each other)

and thus the multiple instances of Appl-C attempt procesing the same message more than once (which is not desired)

I thought off keeping the multiple instances of Appl-C reading off the topic (VirtualTopic.Appl-P.SomeName) directly;
(instead of the individual Consumer.Queue's)
but I do not think that will gaurantee that only one instance of Appl-C will process (and others ignore)

Any suggestions on how to horizontally scale the consumer, Appl-C
ensuring Active-MQ does not deliver the same message to only one instance (@ a time)

Would it be possible to achieve this, exclusively within the Active-MQ broker? (using features of ver 5.3)
(I do not wish to develop any load balancer component, to intercept messages, before they are delivered to Appl-C)

~g1

PS: Appl-C .... does not use any database (so there is no way to share data or state between the multiple instances of Appl-C







  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!