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

RE: Once and only once delivery



Marcel Ruff wrote:
> 
> Geoffrey Lowney wrote:
> > 
> > 2. I also made a version of SimpleGetCallback called SimpleGet.  This
> > program uses "get" instead of a callback to receive and display the
> > messages.  I found that I receive messages multiple times. I tried
making
> > the messages volatile.  In that case I only receive each message once,
but I
> > miss some.  I want a behavior where each message is delivered to a
client
> > once and only once.  I tried pub/sub and point-to-point, and I tried
turning
> > on and off volatile and durable, but no combination seemed to do what I
> > wanted.
> 
> Geoffrey,
> 
> a non-volatile, 'published' message lies around in the server.
> Every get() invocation (form any client) receives this message
> again, since a get() does not discard the message.
> 
> Pub/Sub delivers the message exactly once to any subscriber,
> otherwise it would be a bug.
> 
> A volatile message makes only sense with Pub/Sub, since it does
> exist only a very short period of time.
> If the get() hits the server between processing and deleting
> the message, the get would receive the message.
> This is no clean behaviour, possibly we should
> change this in a new xmlBlaster release.

Thanks for the information Marcel.

This explains a lot of what I was seeing.  One of my reasons for trying to
use get() was because I want to use xmlBlaster in some existing perl code.
There is an xmlrpc perl example which uses get().  From what I could see in
the docs (details are sketchy), using perl with pub/sub (callbacks) would be
a lot more work.  Does anyone have any examples of perl programs which both
send and receive xmlBlaster messages?

Thanks

Geoffrey