Optimized Publish/Subcribe JMS Broker Cluster and Conflicting Posts on StackOverFlow for the Answer

Posted by Gene on Stack Overflow See other posts from Stack Overflow or by Gene
Published on 2010-05-10T20:10:37Z Indexed on 2010/05/10 20:14 UTC
Read the original article Hit count: 433

Filed under:
|
|

Hi,

I am looking to build a publish/subscribe distributed messaging framework that can manage huge volumes of message traffic with some intelligence at the broker level. I don't know if there's a topology that describes this, but this is the model I'm going after:

EXAMPLE MODEL A

A) There are two running message brokers (ideally all on localhost if possible, for easier demo-ing) :

  • Broker-A
  • Broker-B

B) Each broker will have 2 listeners and 1 publisher.

Example Figure

[subscriber A1, subscriber A2, publisher A1] <--> BrokerA <--> BrokerB <--> [publisher B1, subscriber B1, subscriber B2]

  • IF a message-X is published to broker A and there no subscribers for it among the listeners on Broker-B (via criteria in Message Selectors or Broker routing rules), then that message-X will never be published to Broker-B.

  • ELSE, broker A will publish the message to broker B, where one of the broker B listeners/subscribers/services is expecting that message based on the subscription criteria.

Is Clustering the Correct Approach?

At first, I concluded that the "Broker Clustering" concept is what I needed to support this. However, as I have come to understand it, the typical use of clustering entails either:

  • message redundancy across all brokers ... or
  • Competing Consumers pattern

... and neither of these satisfy the requirement in the EXAMPLE MODEL A.

What is the Correct Approach?

My question is, does anyone know of a JMS implementation that supports the model I described?

I scanned through all the stackoverflow post titles for the search: JMS and Cluster. I found these two informative, but seemingly conflicting posts:

  1. Says the EXAMPLE MODEL A is/should-be implicitly supported: http://stackoverflow.com/questions/2255816/jms-consumer-with-activemq-network-of-brokers " this means you pick a broker, connect to it, and let the broker network sort it out amongst themselves. In theory."

  2. Says the EXAMPLE MODEL A IS NOT suported: http://stackoverflow.com/questions/2017520/how-does-a-jms-topic-subscriber-in-a-clustered-application-server-recieve-message "All the instances of PropertiesSubscriber running on different app servers WILL get that message."

Any suggestions would be greatly appreciated.

Thanks very much for reading my post,

Gene

© Stack Overflow or respective owner

Related posts about jms

Related posts about cluster