MQ群集的使用
2008-12-01 11:04:38 来源:WEB开发网这一点是需要注意的,如果在测试环境中,不慎更改了系统时间,可能会由于这个原因导致群集不可用。
3.2.3关于共享队列实例和消息的走向
群集允许定义同一个队列的多个队列实例(queue instance),每一个位于不同的队列管理器上。当我们把消息发到这些实例时,MQ系统来决定将其路由到哪个队列管理器的哪个队列上。例如:在我们给出的第一个例子中,在QMGRI上可以看到两个INPUTQ的实例,它们的宿主队列管理器分别是QMGR1和QMGR2。当我们在QMGRI上向INPUTQ发送消息时,消息被会分发到其他两个队列管理器上。这里我们需要注意以下几个要点:
1) 如果在发送消息的应用程序本地的队列管理器上有队列实例存在,即该队列管理器是队列实例的宿主队列管理器时,消息将只会被发到该队列,而不会被分发到其他队列实例上。还以我们给出的第一个例子为例,如果在QMGRI上也存在INPUTQ队列,则消息将会全部被发往该队列。
2) 关于消息的亲合特性(affinity),如果对消息顺序有要求或者若干个消息必须进行逻辑组合处理,那么我们就不能将这些消息分别路由到不同队列管理器上,这时,我们需要使用BIND_ON_OPEN选项来实现这种需求。
3.2.4 关于打开队列选项的使用
为了使用群集的负载均衡功能,MQ 的API接口函数MQOPEN增加了两个新的选项:MQOO_BIND_ON_OPEN和MQOO_BIND_NOT_FIXED。注意,它的缺省值为MQOO_BIND_ON_OPEN,这样对每一次MQOPEN操作,负载均衡算法将只被调用一次,从而导致消息将只被发送到其中一个队列实例中。因此,大家如果希望使用轮循处理机制,必须将该选项设置为MQOO_BIND_NOT_FIXED。
通过本文对群集功能及使用的简单介绍,希望大家在实际应用中能够采用群集的解决方案,以发挥MQ产品的更多优势。
更多精彩
赞助商链接