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

RE: [xmlblaster] Publish/Topic clobbering with multiple clients

Hi again,
of course the oid should be 

oid='__cmd:?topicList' and not clientList.

Please make also a cvs update since we had to fix the code.


>Hi Colin,
>when you publish to a topic which does not exist xmlBlaster automatically
>creates one for you. When a subsequent publish is done on the same topic
>(the same oid), you actually do an update of the previously published message.
>If you want to publish on an existing oid and you don't know which topics
>exist you can make a get with the oid='__cmd:/node/heron/?clientList' specified
>in the key. This way you get a list of all topics.
>>-- Original Message --
>>From: "Madere, Colin" <colin.madere at ieminc.com>
>>To: "'xmlblaster at server.xmlBlaster.org'"
>>	 <xmlblaster at server.xmlblaster.org>
>>Subject: RE: [xmlblaster] Publish/Topic clobbering with multiple clients
>>Date: Fri, 7 Mar 2003 15:01:29 -0600 
>>Reply-To: xmlblaster at server.xmlBlaster.org
>>It seems I had an odd state of some sort that was causing the problem.
> Now
>>that I stopped and restarted everything the problem seems to have gone
>>Wonder what I got myself into that caused that.
>>So in normal practice you don't worry about whether a topic exists or
>>you simply subscribe to or publish to it?  Is there an official way to
>>subscribe to or publish to a topic that already exists in xmlBlaster?
>>> -----Original Message-----
>>> From:	Madere, Colin [SMTP:colin.madere at ieminc.com]
>>> Sent:	Friday, March 07, 2003 2:07 PM
>>> To:	xmlblaster at server.xmlblaster.org
>>> Subject:	[xmlblaster] Publish/Topic clobbering with multiple clients
>>> I have identical clients connecting to xmlBlaster to exchange messages.
>>> However, with only rudimentary understanding of the protocol and API,
>>> trampling a Topic in my init code somehow.  Meaning, when I launch one
>>> client, I subscribe to an oid, then set up what's needed to publish
>>> that
>>> same oid and then set the topic properties.  Then when I launch the
>>> client (which executes all the same code), it somehow overwrites the
>>> (or publish chanel, not sure of the terminology used) in some way so
>>> updates only work when sent from the one that was launched second.
>>> I'm thinking I should be checking to see if the topic already exists
>>> somehow?  That I should be asking for the subscribe object from the
>>> server?
>>> I dug through the API, but kind of wound up at dead-ends :(
>>> Setup code:
>>>             con = new XmlBlasterConnection(glob);
>>>             qos = new ConnectQos(glob);
>>>             crq = con.connect(qos, this);  // Login to xmlBlaster,
>>> register
>>> for updates
>>>             sk = (oid.length() > 0) ? new SubscribeKey(glob, oid) :
>>> SubscribeKey(glob, xpath, Constants.XPATH);
>>>             sq = new SubscribeQos(glob);
>>>             sq.setWantInitialUpdate(true);
>>>             sq.setWantLocal(false);
>>>             sq.setWantContent(true);
>>>             HistoryQos historyQos = new HistoryQos(glob);
>>>             historyQos.setNumEntries(historyNumUpdates);
>>>             sq.setHistoryQos(historyQos);
>>>             SubscribeReturnQos srq = con.subscribe(sk.toXml(),
>>> sq.toXml());
>>>             pk = new PublishKey(glob, oid, "text/xml", "1.0");
>>>             pk.setClientTags("<MyCompany><ProductName/></MyCompany>");
>>>             pq = new PublishQos(glob);
>>>             pq.setPriority( PriorityEnum.NORM_PRIORITY );
>>>             pq.setPersistent( false );
>>>             pq.setLifeTime( -1L );
>>>             pq.setSubscribeable( true );
>>>             topicProperty = new TopicProperty(glob);
>>>             topicProperty.setDestroyDelay(60000L);
>>>             topicProperty.setCreateDomEntry(true);
>>>             topicProperty.setReadonly(false);
>>>             pq.setTopicProperty(topicProperty);
>Dreaming of a Swiss Account? Get it here: http://freemail.swissinfo.org

Dreaming of a Swiss Account? Get it here: http://freemail.swissinfo.org