[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] cluster configuration



Bertrand-Raphael.Maquel at ses-astra.com wrote:

Hi,

I'm currently trying to use 2 XMLBlaster clusters to make clients
communicate between 2 different geographical places. Actually, I'm just
testing a prototype of this configuration on a single PC, but you get the
idea.

Like this :


Cluster A ====================(non reliable connection)================== Cluster B / \ / \ / \ / \ client 1 client 2 client 3 client 4

So, basically, what I need is to have all messages transmitted to all
clients whatever the domain is, so that each client at any place can
receive any message.

What would be the best configuration for the servers ? Should I try
something with acceptDefault ? Or declare both clusters as masters for all
kinds of domain ?

So far, the only thing I managed to do was send from client 1 to all
clients of cluster B, or from client 1 to all clients of cluster A. But I
can't get the message sent to all the clients at once.

Do anyone see a simple configuration pattern I could use for this ?

Mirroring is not explicitly implemented yet (as nobody needed it up to now)
but you can simulate it like this:

Save the two attached files to your harddisk, they configure
two xmlBlaster nodes.

1. Start the servers:
-----------------------

java -jar ~/xmlBlaster/lib/xmlBlaster.jar -propertyFile A.properties -call[core] true
java -jar ~/xmlBlaster/lib/xmlBlaster.jar -propertyFile B.properties


The first node 'A' is configured as master and listens on port 7600
The other node 'B' is slave for everything and listens on port 7601

2. Start two subscribers, one for A and one for B:
--------------------------------------------------------

java org.xmlBlaster.client.reader.SubscribeMessage -xpath "/xmlBlaster/key[starts-with( at oid,'HelloFrom')]" -port 7600
java org.xmlBlaster.client.reader.SubscribeMessage -xpath "/xmlBlaster/key[starts-with( at oid,'HelloFrom')]" -port 7601


You can see that they connect to the different xmlBlaster nodes subscribing the same
messages.


3. Start two publishers, one for A and one for B:
------------------------------------------------------

java org.xmlBlaster.client.feeder.PublishFile -xmlKey "<key oid='HelloFromA'/>" -port 7600
java org.xmlBlaster.client.feeder.PublishFile -xmlKey "<key oid='HelloFromB'/>" -port 7601


Here it is: both publisher publish a message and these are received
by both subscribers.


Note:
------
I have added support for domain="*" configuration so you don't need
to play around with domains in your messages.
You need to checkout the newest from cvs that the above works!
(or if you don't want to you need to use explicit domains or filtering with XPATH
for cluster setup).



regards,

Marcel



Thanks, -- Brome



--
DISCLAIMER:
This e-mail contains proprietary information some or all of which may be
legally privileged. It is for the intended recipient only. If an addressing
or transmission error has misdirected this e-mail, please notify the author
by replying to this e-mail. If you are not the intended recipient you must
not use, disclose, distribute, copy, print, or rely on this e-mail.







#------------------------------------------------------------------------------
# Configures an xmlBlaster node with the name "A"
#
# Change the hostname='' setting if A is running on another IP,
# for example to hostname='192.168.1.2'
#
# INVOKE: java org.xmlBlaster.Main -propertyFile A.properties
#------------------------------------------------------------------------------


# Switch on CORBA driver only, listens on port 7600:
Protocol.Drivers=IOR:org.xmlBlaster.protocol.corba.CorbaDriver
Protocol.CallbackDrivers=IOR:org.xmlBlaster.protocol.corba.CallbackCorbaDriver
jacorb.verbosity=0
ns=false
port=7600

# Configuer cluster - the A node:
cluster=true

cluster.node.id=A
#------------------------------------------------------------------------------
# Configures an xmlBlaster node with the name "B"
#
# Change the hostname='' setting if A is running on another IP,
# for example to hostname='192.168.1.2'
#
# INVOKE: java org.xmlBlaster.Main -propertyFile B.properties
#------------------------------------------------------------------------------


# Switch on CORBA driver only, listens on port 7601:
Protocol.Drivers=IOR:org.xmlBlaster.protocol.corba.CorbaDriver
Protocol.CallbackDrivers=IOR:org.xmlBlaster.protocol.corba.CallbackCorbaDriver
jacorb.verbosity=0
ns=false
port=7601

# Switch off telnet access, we don't need it
admin.remoteconsole.port=-1

# Example to switch on SOCKET driver only:
#Protocol.Drivers=SOCKET:org.xmlBlaster.protocol.socket.SocketDriver
#Protocol.CallbackDrivers=SOCKET:org.xmlBlaster.protocol.socket.CallbackSocketDriver
#socket.port 7501

# Configuer cluster - the B node:
cluster=true

cluster.node.id=B

cluster.node.master[B]=\
   <clusternode id='B'>\
      <master type='DomainToMaster' acceptDefault='false'/>\
   </clusternode>


# Configure cluster - how to find A:
cluster.node[A]=\
   <clusternode id='A'>\
      <info>\
         <address type='IOR' hostname='' port='7600'/>\
      </info>\
      <master type='DomainToMaster'>\
         <key queryType='DOMAIN' domain='*'/>\
      </master>\
   </clusternode>