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

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

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.
>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 not,
>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 via
>> that
>> same oid and then set the topic properties.  Then when I launch the second
>> 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) : new
>> 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