IBM MQ transport for SOAP and web services reliable messaging
Web services reliable messaging is a protocol for reliably exchanging web service requests and responses over an unreliable connection. It is best-suited to solve problems of short-lived connection disruption.
IBM MQ for SOAP takes advantage of using an IBM MQ managed and reliable network for passing SOAP messages. Transports such as HTTP and FTP are unmanaged. Unmanaged networks are ideal for unpredictable connections, where the difficulties and costs of managing connections outweigh the benefits of not loosing requests and responses.
To overcome the problem of losing files when connections break in unmanaged networks, services like managed FTP build a management layer on top of FTP. The management layer takes over the burden of checking that files have transferred successfully from users, and retransmits missing files if necessary. To use managed FTP, you must have the management software installed at both ends of the connection.
Web services reliable messaging (WSRM) takes a different approach to solving the problem of unreliable connections. Its goal is to transfer web service requests and responses reliably, without both ends of the connection having to use the same software. Any software, by implementing the web services reliable messaging protocol, can exchange messages reliably with other software.
When a connection fails, a sender and receiver must preserve the context of the WSRM message transfer, using a generated URI as a key. The sender and receiver keep attempting to establish a new connection. If a new connection is successfully established, the transfer completes. The WSRM specification does not specify how context is preserved, or when a new connection is attempted.
You might decide that only short-lived outages are of interest. For longer outages, you might be prepared to discard transfers that could not be restarted after a time. Similarly, you might be prepared to discard transfers if either the client or service fails. Leaving the user responsible for assuring transfers, places fewer demands on managing the coordination of client and service.
If network outages are long-lived, over 30 minutes or so, or if the client or server fails, there is an increased likelihood that some connections are never re-established. We can no longer rely on WSRM restoring message transfer automatically in an unmanaged way. You have to consider managing the failed WSRM connections, which implies developing software to manage the network of clients and services.
Use WSRM to overcome short outages might significantly reduce dealing with lost messages on a mobile network. If we do not have to assure message delivery, the benefits of reducing message loss might justify the additional cost of developing a WSRM implementation.
SOAP over JMS provides assured message delivery and deals with longer duration outages of the client, the server, and the network. If you are seeking a more reliable quality of service for SOAP than HTTP, which solution do you choose: IBM MQ transport for SOAP or WSRM? The answer depends on many factors. Some of the factors to consider are listed:
- Whether the unreliability is due to connection failure.
- How long-loved connection failures are.
- If we can manage both the client and server side of the connection.
- If the user or an administrator is ultimately responsible for the delivery of messages.