IIB到MQ:使用CCDT在队列管理器之间切换JMSInput

时间:2014-03-31 09:45:59

标签: ibm-mq messagebroker

我希望我的Integration Bus流实例能够将读取/写入多个队列管理器切换,这些队列管理器同时处于活动状态,所有队列管理器都具有相同的队列定义。就像拥有多实例QM一样,但是在这种情况下QM不会相关,我想从QM中按顺序读取。

一个干净的解决方案是每个流使用一个JMSInput节点,所以如果可以通过使用CCD表,我就会徘徊。

2 个答案:

答案 0 :(得分:2)

我不这么认为。我相信通道的选择是在实例化JMS连接对象时进行的,并且代理将为每个节点缓存单个JMS连接。如果它遇到指示连接断开的异常,它将只尝试重新创建此连接。

所以我认为使用CCDT你可以得到一些故障转移但不是你正在寻找的那种负载平衡。

答案 1 :(得分:2)

通常建议侦听一个众所周知的队列(例如,在请求/回复场景中为请求提供服务的东西,通常是Broker流的情况)是它不会从队列故障转移到队列。造成这种情况的原因有很多,但主要原因是这会排除事务性GET,并且最终可能会出现未提供服务的队列,其中消息会建立起来并且不会被处理。

虽然可以让服务器应用程序按照您的描述进行循环,但CONNECT / DISCONNECT操作 比{更多更昂贵{1}} / GET次操作。结果是,在具有多个流实例的执行组中,为旋转中的许多队列提供服务的流将比具有多个流实例的执行组更慢地执行数量级,其中每个流指向不同的队列实例。

如果需要保护这些代理连接,则该通道可能会使用TLS和相互身份验证。这会将PUT / CONNECT延迟复合到每次连接尝试一次或多次。由于TLS握手仅发生在连接而非每个消息上,因此这对于每个流的一个队列的正常模型来说并不重要。但是,在循环连接方案中,您很幸运每个队列每秒获得1条消息。当然,这适用于任何TLS连接,而不是WMQ特有的。