IBM Integration Bus, Version 9.0.0.8 Operating Systems: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

See information about the latest product version

Receiving messages in a WebSphere MQ message group

You can configure the MQInput node to receive messages that are in a WebSphere® MQ message group.

The following properties on the MQInput node control the processing of messages in a WebSphere MQ message group:

To ensure that your message flow receives group messages in the order that has been assigned by the sending application, select Logical order. If you do not select this option, messages that are sent as part of a group are not received in a predetermined order. This property maps to the MQGMO_LOGICAL_ORDER option of the MQGMO of the MQI. More information about the options to which this property maps is available in the Application Programming Reference section of the WebSphere MQ Version 7 product documentation online.

If you specify a value of By Queue Order on the Order mode property, the message flow processes the messages in the group in the order that is defined by the queue attributes; this order is guaranteed to be preserved when the messages are processed. This behavior is identical to the behavior that is exhibited if the Additional instances property is set to zero. The message flow processes the messages on a single thread of execution, and a message is processed to completion before the next message is retrieved from the queue. If you do not specify this value, it is possible that multiple threads within a single message flow are processing multiple messages, and the final message in a group, which prompts the commit or roll back action, is not guaranteed to be processed to completion after all other messages in the group.

To ensure that only a single instance of the message flow processes the group messages in the order that has been assigned by the sending application, select Logical order and specify a value of By Queue Order on the Order mode property.

If you select All messages available, message retrieval and processing is performed only when all messages in a single group are available. This means that messages in a group are not received until all the messages in the group are present on the input queue. It is good practice to select this check box when your message flow needs to process group messages. If you do not select this check box, the message flow receives the messages as they arrive on the input queue; if a message in the group fails to arrive on the input queue, the message flow waits for it and cannot process any further messages until this message arrives. This property maps to the MQGMO_ALL_MESSAGES_AVAILABLE option of the MQGMO of the MQI. More information about the options to which this property maps is available in the Application Programming Reference section of the WebSphere MQ Version 7 product documentation online.

If you select Commit by message group, message processing is committed only after the final message of a group has been received and processed. If you leave this check box cleared, a commit is performed after each message has been propagated completely through the message flow. This property is relevant only if you have selected Logical order. It is good practice to select this check box together with the All messages available check box because this ensures that the complete message group is retrieved and processed in the same unit of work without risk of the message flow waiting indefinitely for messages in the group to arrive on the input queue.

To ensure that the message flow that processes group messages does not wait for unavailable messages:
  • Avoid having multiple message flows reading from the same input queue when group messages are being retrieved.
  • Avoid deploying additional instances of a flow that retrieves group messages.
  • Avoid using expired messages in message groups.
  • When expired messages are to be used, ensure either that all messages have the same expiry time or that the first message in the group is set to expire before the rest of the group. If the first message in a group cannot be retrieved, the group can never be started in logical order.

If a message flow waits for a group message that does not arrive within the wait interval, a BIP2675 warning message is issued. From that point on, the message flow always attempts to retrieve the next group message and does not process any other input messages until the next group message is received.

Therefore, if the expected group message does not arrive, or has expired, the message flow must be stopped manually, and any incomplete message group cleared from the input queue.

A message flow cannot receive all the messages in a group in one operation.

If you specify a value of Yes or No on the Transaction mode property, all the segments in a message are received in the message flow as a single message. As a result, the message flow might receive very large messages which might lead to storage problems in the broker. If you specify a value of Automatic on the Transaction mode property, message segments are received as individual messages.


ac25700_.htm | Last updated Friday, 21 July 2017