我们是WebSphere MQ的新手,我们想知道我们是否可以在不同的QMgrs中创建2 + RQSTR
个频道,只连接服务器上的一个SVR
频道,如:
频道名称:CH1 (RQSTR) -----> CH1 (SVR)
然后在另一个QMgr上,另一个频道命名为:CH1 (RQSTR) -----> CH1 (SVR)
当我们尝试启动第二个CH1时,我们收到错误消息,例如"频道正在使用"。
我们查了很多文档和论坛,所有人都说我们可以创建RQSTR
的多个实例,那么这些都可以通过一个SVR
频道连接到我们的服务器吗?或者我们只需在服务器上创建尽可能多SVR
个频道,RQSTR
配对?
答案 0 :(得分:2)
没有。 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
,只有当您合法地将其指向运行时决定的不同位置并且不更改频道定义时才使用SDR
。否则,请在CONNAME
中使用包含多个实例的SDR
或使用经典CONNAME
频道,并在故障转移期间更改textarea.addEventListener('scroll', function(evt){
evt = evt || window.evt;
evt.target.setSelectionRange(evt.target.textLength - 1, evt.target.textLength - 1);
setTimeout(function(){
evt.target.setSelectionRange(evt.target.textLength, evt.target.textLength);
}, 0);
});
。