本示例演示了当同一代理上的各个执行组中的消息流使用相同序列化标记时,一次只有一个 MQInput 节点允许从共享队列中获取消息。
相同的消息流 MyFlowA 将部署至代理 MQ01BRK 上称为 MYGroupA 和 MYGroupB 的两个执行组中。
在这种情况下,不需要参加队列共享组的队列管理器。输入队列 INQueue 使用处置 QMGR 定义为本地。
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
执行组 MyGroupB 中的消息流 MyFlowA 无法处理输入,因为其已传递的序列化标记已在队列管理器使用(通过执行组 MyGroupA 中的消息流 MyFlowA 里的 MQInput 节点)。 这由消息 bip2623 中的原因码 2271 (MQRC_CONN_TAG_IN_USE) 表明。
如果操作员在重新部署代理配置期间取消、中止或删除了第一个执行组,则第二个执行组中的输入节点现在能够从队列 INQueue 获取输入消息。
BIP2091I MQ01BRK MyGroupB 11 THE BROKER HAS RECONNECTED TO WEBSPHERE BUSINESS INTEGRATION SUCCESSFULLY : ImbCommonInputNode(785)
执行组 MyGroupB 中的消息流 MyFlowA 现在能够从共享 INQueue.QSG 中恢复对消息的处理。
请注意,尽管输入的序列化可以通过配置专用输入的输入队列并采用类似的方法实现,但是这不确保恢复情况期间的消息完整性。这只有如本示例中所述,通过使用序列化标记才能实现。