Martin Johnson wrote:


Hi Marcel

How would I achieve this use case.

A client (socket) using a persistent connection and persistent subscription disconnects from the server gracefully.
Hi Martin,

if you call on client side:

xmlBlasterAccess.leaveServer(null) ; // instead of xmlBlasterAccess.disconnect(...)

the client side resources are freed but the server maintains the session and
queues the subscribed messages.

The client should use a positive public session id like:

 "client/joe/session/1"

and can reconnect to this session on restart (to access the filled callback queue). Further it should tell the xmlBlaster server on lost callback ping to retry, this is a command line example:

java javaclients.HelloWorldSubscribe -session.name joe/5 -oid Hello -dispatch/callback/retries -1 -persistentSubscribe true

You should set -persistentSubscribe to true as well. In this case even the xmlBlaster server may go down and on restart immediately collects messages for the subscriber (even if the subscriber
arrives a day later).
Like this no messages are ever lost.

What you describe is a very common use case used
most time with xmlBlaster and works very reliable,

regards
Marcel
During this periond when the client is not available (ie shutdown for some maintenance) the server continues maintaining session and subscription queue. The client is then started again and connects to same sessionid and recv's messages published during period of downtime.

I have been trying with

  <qos>
    <deleteSubjectQueue>false</deleteSubjectQueue>
    <clearSessions>false</clearSessions>
  </qos>

When calling disconnect()


Without much luck.

Regards

Martin


--
Marcel Ruff
http://www.xmlBlaster.org

Reply via email to