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

Re: Re: [xmlblaster-devel] About persistent and history

>peng at qcet.cn wrote:
>> Hello:
>>    I try to create a persistent topic(with long life) so every user
>>first login and receive the Message once(just once);
>>and if the user second login again,the xmlblaster does not post the Message to this user again.
>> How can I write the key and Qos?
>Please look into:
>   http://www.xmlblaster.org/xmlBlaster/doc/requirements/msgDistributor.plugin.ConsumableQueue.html
>You should have a persistent session for each user and the
>user should initially login and subscribe to the topic.
>Like this the messages are collected for all clients even if
>they are offline.
>>    And I have  Question about history,I create a persistent topic(with long life) ,
>>I pub a message to this topic,after a while,I pub a other message to this topic again,
>>then I use get(xa, "<key  queryType='XPATH'>//key</key>" , "<qos/>", &xmlBlasterException)
>> method to get the messages, I get the last message only,why I can not get the message I first post?
>Please see
>  http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.subscribe.html
>and search for history.
>The history depth is 10, you can adjust it on first publish, see
>  http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.publish.html
>  "<queue relating='history' type='CACHE' maxEntries='1000' ...
>PS: Have a look into xmlBlaster/demo/javaclients/HelloWorldSubscribe.java
>    or xmlBlaster/demo/c++/SubscribeDemo.cpp for usage examples.
>> Thanks very much!
>> Peng

I read the file and try to do this:

first I create client1 like this:
connection qos is: 
  <securityService type="htpasswd" version="1.0"> <![CDATA[<user>peng1</user><passwd>secret</passwd>]]> </securityService>
  <session name="peng/1"  />
  <queue relating="callback"  >  <callback type="SOCKET" sessionId="topSecret">  socket://  </callback>  </queue>

sub qos is:
<key oid="Hello" /> <qos><subscribe id="_subId:peng1" /> </qos> 

then I create client2,client3,client4,client5 use this
( user name   =peng2,peng3,peng4,peng5;
  session name=peng/2,peng/3,peng/4,peng/5;
  subscribe id=_subId:peng2,_subId:peng3, ...
  and the socket port is program auto create.

In client5,I pub a message like this: 
<key oid='Hello' />
<qos>   <topic><msgDistributor typeVersion="ConsumableQueue,1.0"/> </topic>    </qos>

only client1 recive the message;
then I close client1 and pub a message again in client5:

<key oid='Hello' />
<content>an other message</content>
<qos>   <topic><msgDistributor typeVersion="ConsumableQueue,1.0"/> </topic>    </qos>

and at this time only client2 receive the message;

If my xml is wrong?

I also use get() to get the __sys__UserList
  <key oid='__sys__UserList'>
 <content size='88'><![CDATA[__sys__GuiQuery,__sys__jdbc,__RequestBroker_internal[xmlBlaster_192_168_1_190_3412],peng]]></content>
  <expiration lifeTime='-1'/>
  <rcvTimestamp nanos='1117442730312000001'/>

the user peng1,peng2... not in the List,why?