1 Reply Latest reply on May 5, 2006 2:31 PM by tom.elrod

    guaranteed delivery/callbacks

    mazz

      Is there any way to guarantee a client message makes its way to the server? And similarly, is there any way to guarantee a callback is succesfully called?

      I don't think there is, but I figured I'd ask before I go and try to implement something :-)

      The use cases I'm thinking of is:

      1) client asks to invoke, but the server is down - can I persist or somehow cache that request so it is retried when the server is up?

      2) client asks to invoke, server gets it and processes it but before the push callback is made, the client goes down. Can the server somehow retry that callback when the client comes back up? What if the server goes down in the meantime? Can the callback be persisted so when the server comes back up it begins to retry sending the callback again.

      I know , I know, its alot to ask for. I just figured I'd ask... I'm assuming the answer is no to all of that.

        • 1. Re: guaranteed delivery/callbacks

          Assume for case 1, you are referring to standard synchronouse invoke() method call. In this case, will get an exception thrown is server is not there. If is async, will re-try, but will eventually fail and the invocation is lost.

          For case 2 (push callbacks), the handler will get an exception when trying to push the callback to the dead client. Retries can be handled within the handler code. However, if server goes down as well, message is lost.

          The only thing that has any concept of recovery (besides invocation failover) is pull callbacks with a persited store. In general, do not want to provide any types of guarantee of message delivery in case of failure as would make using remoting more complex and has already been solved by JMS.