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

[xmlblaster] PtP and ACK

Hi all,

I am very new to xmlBlaster, and have a few questions regarding our needs.

We are considering using xmlBlaster in a project which would include one publisher and many receivers. We would need to be sure that every receiver gets all messages once, and only once. We should also be sure that every receiver was able to treat the message correctly.

After a few tests, I could run an example with one publisher and two receivers in a way that seems to be close to what we are looking for, but a few questions remain.

This test runs in PtP mode, with clients having a pubSessionId. The publisher sends every messages to every receiver. If xmlBlaster is down, messages are queued on the publisher. If a client is down, messages are queued on xmlBlaster. Then when the client connects, it gets the queued messages. This approach means that the publisher has to know every receivers in order to send the messages to each of them. First question: is PtP with pubSessionId the good way to be sure that every message in received once and only once by a client ?

Next, what happens if a receiver can't treat the message ? Or if the receiver gets down before having done its job with the message ? In my test, every receiver sends an ACK message back to the publisher. But I'm not sure what to do with this ACK message. Is there anything already built in xmlBlaster which can be configured in case an ACK message isn't sent back to a publisher ? Such as trying to send it again or anything ? Or does this logic has to be fully implemented in the publisher itself ?

Finally, during these first tests, I tried to shutdown a receiver, and then send a message to it. When I restart this receiver, it connects to xmlBlaster with the same previous pubSessionId, and thus receives the messages which where queued on xmlBlaster. Though, I get a problem sometimes when trying to send back ACK messages. The 'connect' method of the I_XmlBlasterAccess is called with a new I_Callback() object containing an 'update' method which tries to send an ACK message. Sometimes sending an ACK message raises an 'user.notConnected' error. What is not clear for me is that the receiver tries to send an ACK message after having received a message. Therefore, I would have thought the receiver was already connected. Why this error ? There must be a concept I don't understand here.

Thanks for your help !

Nicolas ROD
UniGe - NTIC
Uni Dufour, bureau 360A