Optimized Publish/Subcribe JMS Broker Cluster and Conflicting Posts on StackOverFlow for the Answer
- by Gene
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:
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."
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