我们希望使用MQ群集,以便更好地在两个不同的站点上分配工作负载。我们的一个要求是将流量保持在地理位置,以避免站点之间的消息路由不可靠(除非没有可用的本地MQ管理器)。为实现这一目标,我们目前正在寻求使用此presentation的第26页(智能路由部分)所示的队列别名。
为了测试,我们使用三个MQ管理器(MQ版本9)设置了一个小型集群,其队列与演示幻灯片一样,当所有管理器和队列都可用时,我们可以看到消息在同一区域内路由但是,如果我们在纽约的NYQ别名队列中使用put抑制,我们就不会看到任何新消息路由到LONDON的替代NYQ别名队列。相反,尝试将消息写入AppQ别名队列的客户端应用程序获得MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2268' ('MQRC_CLUSTER_PUT_INHIBITED').
。此外,如果我们完全终止NEWYORK,客户端应用程序能够将消息写入AppQ Alias Queue,但消息只是在AppQ Manager的SYSTEM.CLUSTER.TRANSMIT.QUEUE中排队,而不是路由到LONDON MQ Manager&# 39;替代NYQ别名队列。为什么会这样?
答案 0 :(得分:1)
在上述测试场景中,我们通过将群集队列的默认绑定类型更改为“未修复”(例如ALT QL(QUEUE_NAME) DEFBIND(NOTFIXED)
),设法获取路由到较低优先级MQ Manager(即LONDON)的消息。