[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