Although a WebSphere MQ Everyplace network can exist standalone, without the need for a WebSphere MQ server or network, in practice WebSphere MQ Everyplace is often used to complement an existing WebSphere MQ installation. This extends WebSphere MQ's reach to new platforms and devices, and provides advanced capabilities, such as queue or message based security and synchronous messaging. From a WebSphere MQ Everyplace application perspective, WebSphere MQ queues and queue managers act as additional remote queues and queue managers. However, a number of functional restrictions exist because these queues are not accessed directly through WebSphere MQ Everyplace connections and a WebSphere MQ Everyplace queue manager, but require the involvement of an WebSphere MQ Everyplace gateway.
The gateway can send messages to multiple WebSphere MQ queue managers either directly or indirectly, through WebSphere MQ client channels. If the connection is indirect, the messages pass through WebSphere MQ client channels to an intermediate WebSphere MQ queue manager and then onwards through WebSphere MQ message channels to the target queue manager. Chapter 7, Interoperability with other messaging systems, of the WebSphere MQ Everyplace Application Programming Guide provides more information on the gateway and message routing between WebSphere MQ Everyplace and WebSphere MQ.
This section does not apply to the C codebase.
WebSphere MQ Everyplace supports the WebSphere MQ bridge, which acts as an interface between WebSphere MQ Everyplace and WebSphere MQ networks. This bridge uses the WebSphere MQ Java client to interface to one or more WebSphere MQ queue managers, thereby allowing messages to flow from WebSphere MQ Everyplace to WebSphere MQ and vice versa. In the current version of WebSphere MQ Everyplace one such bridge is recommended per server, and each is associated with multiple WebSphere MQ queue manager proxies (definitions of WebSphere MQ queue managers). A queue manager proxy definition is required for each WebSphere MQ queue manager that communicates with WebSphere MQ Everyplace. Each of these definitions can have one or more associated client connection services, where each represents a connection to a single WebSphere MQ queue manager. Each of these may use a different WebSphere MQ server connection to the queue manager, and optionally a different set of properties such as user exits or ports.
Chapter 7, Interoperability with other messaging systems, of the WebSphere MQ Everyplace Application Programming Guide describes WebSphere MQ bridge properties in detail, how messages flow between WebSphere MQ Everyplace and WebSphere MQ using the WebSphere MQ bridge, and how to customize the bridge for your specific purposes.
WebSphere MQ Everyplace messages destined for WebSphere MQ pass through the bridge and are converted into a WebSphere MQ format, using either a default transformer or one specific to the target queue. A custom transformer offers much flexibility, for example it is good practice to use a subclass of the WebSphere MQ Everyplace message class to represent messages of a particular type over the WebSphere MQ Everyplace network. On the gateway a transformer can convert the message into a WebSphere MQ format using appropriate mapping between fields and WebSphere MQ values and adding specific data to represent the significance of the subclass.
The default transformer from WebSphere MQ Everyplace to WebSphere MQ cannot take advantage of subclass information but has been designed to be useful in a wide range of situations. It has the following characteristics:
The default transformer from WebSphere MQ Everyplace to WebSphere MQ works in conjunction with the MQeMQMsgObject class. This class is a representation of all the fields you could find in a WebSphere MQ message header. Using the MQeMQMsgObject, your application can set values using set() methods. Therefore, when an MQeMQMsgObject, or an object derived from it, is passed through the default WebSphere MQ Everyplace transformer, that is the MQeBaseTransformer, the MQeBaseTransformer gets the values from inside the MQeMSMsgObject, and sets the corresponding values in the WebSphere MQ message, for example, the priority value is copied over to the WebSphere MQ message.
If the message being passed is not an MQeMQMsgObject, and is not derived from the MQeMQMsgObject class, the whole WebSphere MQ Everyplace message is copied into the body of the WebSphere MQ message. This is referred to as funneling. The message format field in the WebSphere MQ message header is set to indicate that the WebSphere MQ message holds a message in WebSphere MQ Everyplace "funneled" format.
WebSphere MQ messages for WebSphere MQ Everyplace are handled similarly to those travelling in the other direction. The default transformer inspects the message type field of the WebSphere MQ header and acts accordingly.
If the WebSphere MQ header indicates a "funneled" WebSphere MQ Everyplace message, then the WebSphere MQ message body is reconstituted as the original WebSphere MQ Everyplace message that is then posted to the WebSphere MQ Everyplace network.
If the message is not a "funneled" WebSphere MQ Everyplace message, then the WebSphere MQ message header content is extracted, and placed into an MQeMQMsgObject. The WebSphere MQ message body is treated as a simple byte field, and is also placed into the MQeMQMsgObject. The MQeMQMsgObject is then posted to the WebSphere MQ Everyplace network.
This MQeMQMsgObject class and the default transformer behavior mean that:
WebSphere MQ remote queues are enabled for synchronous WebSphere MQ Everyplace put messaging operations, from a WebSphere MQ Everyplace queue manager. All other messaging operations must be asynchronous.
WebSphere MQ Everyplace administration messages cannot be sent to a WebSphere MQ queue manager. The administration queue does not exist there and the administration message format differs from that used by WebSphere MQ.
A WebSphere MQ Everyplace network can exist independently of WebSphere MQ, but in many situations the two products together are needed to meet the application requirements. WebSphere MQ Everyplace can integrate into an existing WebSphere MQ network with compatibility including the aspects summarized below:
WebSphere MQ Everyplace Version 2.0 does not support all the functions of WebSphere MQ. Apart from environmental, operating system and communication considerations, some of the more significant differences:
However, within WebSphere MQ Everyplace many application tasks can be achieved through alternative means using WebSphere MQ Everyplace features, or through the exploitation of sub-classing, the replacement of the supplied classes or the exploitation of the rules, interfaces, and other customization features built into the product.
Although both WebSphere MQ Everyplace and WebSphere MQ offer assured delivery, they each provide for different levels of assurance. When a message is travelling from WebSphere MQ Everyplace to WebSphere MQ, the message transfer is only assured if the combination of putMessage and confirmPutMessage is used. Chapter 6, Message Delivery, of the WebSphere MQ Everyplace Application Programming Guide, provides detailed information on transferring messages. When a message is travelling from WebSphere MQ to WebSphere MQ Everyplace, the transfer is assured only if the WebSphere MQ message is defined as persistent.