ibm-mq – WMQ的SVR通道可以与多个RQSTR通道连接吗?

我们是WebSphere MQ的新手,我们想知道我们是否可以在不同的QMgrs中创建2个RQSTR通道,只连接服务器上的一个SVR通道,如:

频道名称:CH1(RQSTR)—–> CH1(SVR)

然后在另一个QMgr上,另一个频道命名为:CH1(RQSTR)—–> CH1(SVR)

当我们尝试启动第二个CH1时,我们收到错误消息,例如“频道正在使用中”.

我们查了很多文档和论坛都说我们似乎可以创建一个RQSTR的多个实例,那么这些都可以通过一个SVR通道连接到我们的服务器吗?或者我们是否只需在服务器上创建与SVR通道一样多的RQSTR配对?

最佳答案 不可以.一次SVR或SDR通道连接到一个且仅一个远程目标.可以在多个QMgrs上定义SVR或SDR到单个QMgr上的单个RCVR或RQSTR.

在MQ集群中也是如此. QMgr的CLUSRCVR接受来自群集中所有节点的连接.每个节点都自动定义相同名称的匹配CLUSSDR.因此,在集群中,每个远程QMgr上将有一个名为CLUSTER.QMGR的入站通道和一个CLUSSDR,它们的名称也为CLUSTER.QMGR.

渠道管理交易批次中的消息.出站通道有一个目标,因此如果批处理失败,它就知道它必须连接到哪个远程节点才能协调事务.入站通道分别跟踪多个入站连接.

RQSTR / SVR通道专为防火墙允许仅从内部启动的连接而设计.为了获取入站消息,RQSTR启动通道.这也意味着SVR无法挂断套接字并接受任何可以启动它的RQSTR的连接.

将其与RQSTR / SDR对的行为进行对比.在这种情况下,SDR从RQSTR接收启动请求,但随后立即关闭套接字并继续连接到其CONNAME中的任何内容.

当我有B2B通道连接时,我总是使用RQSTR / SDR对.我的RQSTR可以启动业务合作伙伴的SDR,如果我发送交易但没有消息回来,这通常很有帮助.如果我启动RQSTR并且频道出现,那就排除了连接问题.如果消息流过,我知道另一端的应用程序已启动,但通道触发无效.如果频道启动但没有消息到达,我知道远程应用程序已关闭.

然后,当我打电话给业务合作伙伴报告停电时,可以告诉他们他们究竟出了什么问题,他们认为我是个天才.并不是说我这样做是为了让人们认为我是一个天才,但如果我通常对诊断准确,他们通常会更愿意接听我的电话.

RQSTR通道的构建假设您将它与SVR一起使用,因此没有ADOPTNEWMCA功能.这是唯一不利的一面.如果网络通常是可靠的,那就不是很重要了,所以我经常使用RQSTR / SDR对.

总而言之,SVR通道不是要同时连接到多个远程节点.它旨在一次连接到多个远程节点中的任何一个.由于任何正确配置的RQSTR都可以启动SVR,因此只有在您合法地将其指向运行时决定的不同位置并且不更改通道定义时才使用SVR.否则,在CONNAME中使用包含多个实例的SDR,或使用经典SDR通道并在故障转移期间更改CONNAME.

点赞