[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
>see
> "<queue relating='history' type='CACHE' maxEntries='1000' ...
>
>regards,
>Marcel
>
>PS: Have a look into xmlBlaster/demo/javaclients/HelloWorldSubscribe.java
> or xmlBlaster/demo/c++/SubscribeDemo.cpp for usage examples.
>
>
>>
>> Thanks very much!
>>
>> Peng
>>
>>
>>
>>
>
>
>--
>http://www.xmlBlaster.org
I read the file and try to do this:
first I create client1 like this:
connection qos is:
<qos>
<securityService type="htpasswd" version="1.0"> <![CDATA[<user>peng1</user><passwd>secret</passwd>]]> </securityService>
<persistent>true</persistent>
<session name="peng/1" />
<queue relating="callback" > <callback type="SOCKET" sessionId="topSecret"> socket://192.168.1.102:1593 </callback> </queue>
</qos>
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' />
<content>info1</content>
<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'>
<__sys__internal/>
</key>
<content size='88'><![CDATA[__sys__GuiQuery,__sys__jdbc,__RequestBroker_internal[xmlBlaster_192_168_1_190_3412],peng]]></content>
<qos>
<sender>/node/xmlBlaster_192_168_1_190_3412/client/__RequestBroker_internal[xmlBlaster_192_168_1_190_3412]</sender>
<expiration lifeTime='-1'/>
<rcvTimestamp nanos='1117442730312000001'/>
<forceUpdate/>
<isPublish/>
</qos>
the user peng1,peng2... not in the List,why?