The misunderstood Guaranteed Delivery EAI pattern


Guaranteed delivery pattern is about delivering of messages by the sender when the target messaging system has failed.

This pattern is one of the most misunderstood patterns especially when the EAI application is hosted in Weblogic Server and when IBM Websphere MQ (WMQ) is used as the underlying messaging platform.

In Weblogic, the inbuilt JMS Server option provides guaranteed message delivery when the WMQ Queue Manager is unavailable. How? The messages are temporarily stored in a file, or in-memory or on a database. When the target WMQ system is made available, then the stored messages are forwarded to the destination queue manager. Though Weblogic server implements this pattern through JMS Server/ MQ Bridge, however, it is not recommended. Because this would decrease the economies of scale.

WMQ provides scalable and simple solutions to such problems. Both these solutions are mentioned below:
a) Mount the in-memory persistent queues on a SAN that is configured in High Availability (HA) mode.

b) Configure the queue managers in HA mode and load balance the workload across them.

Configuring the queue managers in HA mode usually involves clustering of queue managers when Message Queuing (MQ) intercommunication is based on WMQ Server to Server.

However in the situations of using WMQ client or connecting to WMQ through HTTP/REST (available straight out of box in WMQ v7.0), the HA mode can be configured through a load balancer of choice. Note this method of messaging is applicable to applications that are integrated in asynchronous mode, where order of message processing is unimportant.