This example demonstrates that only one MQInput node at a time is allowed to take messages from a shared queue when the same serialization token is used by message flows running in separate integration servers on the same broker.
An identical message flow MyFlowA is deployed to two integration servers called MYGroupA and MYGroupB on broker MQ01BRK.
In this case, the queue manager does not need to participate in a queue sharing group. The input queue INQueue is defined as local with disposition QMGR.
The message flows do not have to be identical; the significant point is that an identical serialization token is used in both flows.
The simple message flow in this example consists of an MQInput node connected to an MQOutput node. The MQInput node in both message flows gets messages from the shared queue INQueue.QSG; the node attribute Serialization Token is configured as MyToken123ABC in both MQInput nodes.
The message flow property additional Instances takes the default value of zero in both message flows, which ensures that input is serialized within the flow.
BIP2656I MQ01BRK MyGroupB 11 UNABLE TO OPEN QUEUE
'INQueue' ON WEBSPHERE BUSINESS INTEGRATION QUEUE
MANAGER 'MQ01': BECAUSE SERIALIZATION TOKEN
MyToken123ABC is already in use. NO USER ACTION REQUIRED
Message flow MyFlowA in integration server MyGroupB is unable to process input because the serialization token it has passed is already in use within the queue manager (by the MQInput node in message flow MyFlowA in integration server MyGroupA). This is indicated by the reason code 2271 (MQRC_CONN_TAG_IN_USE) in message bip2623.
If the first integration server is canceled by the operator, ends with an abend, or is deleted during a redeployment of the broker configuration, the input node in the second integration server is now able to get input messages from queue INQueue.
BIP2091I MQ01BRK MyGroupB 11 THE BROKER HAS
RECONNECTED TO WEBSPHERE BUSINESS INTEGRATION
SUCCESSFULLY : ImbCommonInputNode(785)
Message flow MyFlowA in integration server MyGroupB is now able to recover processing of messages from the shared queue INQueue.QSG.
Note that, although serialization of input can be achieved in a similar manner by configuring the input queue for exclusive input, this does not ensure message integrity during a recovery situation. This can be achieved only through the use of the serialization token as described in this example.