Web Services Reliable Messaging (WS-RM) is an OASIS standard that allows two systems to reliably exchange SOAP messages with each other.
The purpose of WS-RM is to ensure delivery of messages in situations such as the destination endpoint being temporarily unavailable (for example, in the case of a server restart) or the message path crossing multiple transport connections, any of which might fail (for example, across a firewall).
WS-RM offers greater reliability when using HTTP transport, but has a performance impact.
WS-RM is applicable only to HTTP transport. If you configure WS-RM on a message flow that uses JMS transport, the WS-RM settings are not used when the flow is deployed.
Systems that implement WS-RM retransmit messages that have not been successfully delivered and acknowledged, and prevent duplicate messages from being delivered to the application destination.
WS-RM is a web services protocol and can be used with WS-Security and WS-Addressing.
Reliable messaging takes place between two endpoints known as the reliable messaging source and the reliable messaging destination. Before the messages are sent, the reliable source and reliable destination perform a message exchange to establish a Sequence.
A Sequence is identified by a unique identifier and comprises a sequence of messages which are numbered starting from one.
Sending a group of messages in a Sequence ensures the reliability of all the messages in that Sequence.
The reliable messaging source sends each message one or more times to the reliable messaging destination.
The destination sends back acknowledgment for each message it receives to show that the message has been successfully received. If the reliable messaging source does not receive an acknowledgment that a message has been received by the destination, it sends the message again until an acknowledgement is received.
When all messages in a sequence have been successfully received by the destination and acknowledgement received by the source, the source sends a TerminateSequence message to instruct the destination that the message sequence is complete.
If the client is waiting for messages that have not been delivered, it can initiate a WS-MakeConnection request.
WS-MakeConnection is a specification that describes how messages can be exchanged between a server and a client using a transport-specific back-channel.
The client's MakeConnection request allows the server to respond with any queued messages that have not been received by the client.