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