[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xmlblaster-devel] Get connection states of connected nodes...
Marcel,
Thanks for the info, that sounds like the way to do it, but it may be more
than I really need right now. Given that I have a list of the node ids, can
I make a simple query to see if they are connected to my local xmlBlaster
instance? I can query my local node for the nodeList using:
MsgUnit[] msgs = con.get(
"<key oid='__cmd:/node/?nodeList'/>",
"<qos/>");
and that gives me the nodeList, but when I attempt to get any information
about any of those nodes, I get an error:
errorCode=user.illegalArgument message=#1.1.1 Query of foreign cluster node
'vsp' is not implemented, sorry '/node/vsp/?numTopics' rejected
I can, however, query my local node for the same information and I get it:
<key oid='__cmd:/node/stauntonstc/?numTopics'/>' = <qos> <isGet/> </qos>
<key oid='__cmd:/node/stauntonstc/?numTopics'/> <content
type='String'>3</content>
I really just need a simple method to make sure that my local cluster node
is in contact with the others.
Matt
----- Original Message -----
From: "Marcel Ruff" <mr at marcelruff.info>
To: <xmlblaster-devel at server.xmlBlaster.org>
Sent: Wednesday, March 08, 2006 7:56 PM
Subject: Re: [xmlblaster-devel] Get connection states of connected nodes...
> Matthew Sargent wrote:
> > Hi,
> >
> > We are using the simple domain to master mapping and have setup
> > several mater/slave relationships. I would like to test if the
> > xmlBlaster instance I am connected to is further connected to others
> > in the cluster. I have a list of domains that I am making
> > subscriptions to and would like to use those to figure out if the
> > masters associated with each particular domain is connected. I see
> > many examples if you already have the master node id, but is there a
> > way to get the master node id for a domain so I can use that to query
> > the connection state?
> Hmm, probably not out of the box ...
>
> What you can certainly to is to register a native plugin in
> xmlBlasterPlugins.xml,
> you can take a copy of org.xmlBlaster.engine.EventPlugin.java as a base
> and throw
> out everything you don't need.
> Find the code line where
> this.engineGlob = ...
> is assigned.
> With this you can call
>
> ClusterNode[] nodes =
> this.engineGlob.getClusterManager().getClusterNodes();
> for (int i=0; i<nodes.length; i++) {
> ClusterNode node = nodes[i];
> node.getConnectionState(); // See javadoc, marks alive, polling
> node.getId(); // the nodes name
>
>
> Now you know the cluster nodes and if the connection is alive.
>
> On the other side note that the EventPlugin implements
> I_SubscriptionListener.
> With this listener you get notifed about all coming and going
subscriptions:
>
> public void subscriptionAdd(SubscriptionEvent subscriptionEvent) {
> SubscriptionInfo subscriptionInfo =
> subscriptionEvent.getSubscriptionInfo();
> String domain = subscriptionInfo.getKeyData().getDomain();
> ...
> }
> public void subscriptionRemove(SubscriptionEvent subscriptionEvent) {
> ...
> }
>
> Now you know about all subscribed domains.
>
> You could now publish a PtP message to the clients interested or better
> publish the current list
> to a topic (say oid="myCurrentDomainList") where your clients retrieve
> it from with get().
>
> regards
> Marcel
>
>
> >
> > I would like to use the con.get() to gather this information
> > periodically so I can report on connection status.
> >
> > Thanks,
> >
> > Matt
>