Whenever you are using Web services in business-critical applications, it is important that messages are exchanged in a reliable manner. Web Services Reliable Messaging (WSRM) ensures that message exchange is performed correctly – without messages getting lost or being duplicated. WSRM ensures a reliable exchange of messages even when the connection to the network is lost – for example, during a purchase order.
To guarantee message exchange and also to control the sequence of incoming messages, the WSRM protocol combines one or multiple messages into sequences.
Sequences contain a unique identifier. Messages in a sequence are numbered consecutively. The WSRM sequence header in the SOAP message identifies the sequence to which a message belongs.
WS Reliable Messaging implementations at the sender and receiver sides ensure that messages are transferred securely. A prerequisite for this is that incoming messages are confirmed by the receiver. For this purpose, the specification defines the format of an acknowledgement that the receiver sends to the sender as confirmation. The sender waits for the confirmation and, if necessary, keeps sending the message until the confirmation is received.
Sequences are created, opened, closed, activated, and terminated by the application.
To avoid unnecessary network communication, the receiver does not have to confirm the receipt of every single message individually, but can confirm whole (not necessarily related) sections in one acknowledgement - for example, confirm that messages 1, 3, and 5 have been correctly received.
Since messages 2 and 4 were not confirmed, they are sent again. The sequence is only finished when successful receipt of these messages, too, has been confirmed.
Message persistence is not connected to the WSRM protocol and must be adopted by the WSRM implementation.
WSRM implementation of the AS ABAP requires that, at the consumer-side, either all or none of the calls are sent to the provider. At the provider-side, every call is processed in a separate transaction. A COMMIT WORK is issued for each message.
An error in a message means that sequence processing will be canceled. When a termination or error occurs, a sequence can be ended or restarted using the sequence monitor (see: Monitoring Sequences).
For detailed information about WSRM, refer to the OASIS standard in Web Services Reliable Messaging.