Messages are sent from a client message store to a server message store, and then on to another client message store. QAnywhere does this via queues: a message is put on a queue in the client message store; when it is received by the server message store, it is put on a queue for delivery to one or more client message stores; and when it is received by a client message store, it is put on a queue for pickup.
Once a message is sent, it will be delivered unless one of the following occurs:
The message expires (only if an expiration is specified).
The message is cancelled via Sybase Central.
The device from which the message is sent is lost unrecoverably before it can synchronize with the server message store (or for some other reason, synchronization is impossible).
A message will not be delivered more than once. If an application successfully acknowledges or commits the receipt of a message, then the same message will not be delivered again. There is a possible exception with JMS servers: in the event of the MobiLink server or JMS server crashing, there is a possibility that a message will be delivered twice.