• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

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

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

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-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)


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