4

我正在尝试将 MQQueueManager 与多个实例一起使用在.net 中,我们提供了带有 MQC.CONNECTION_NAME_PROPERTY 的 IBM MQ jar

    ConnectionName = "fred.mq.com(2344),nick.mq.com(3746),tom.mq.com(4288)";
    Hashtable Properties-new Hashtable();
    properties.Add(MQC.CONNECTION_NAME_PROPERTY,ConnectionName);
    MQQueueManager qmgr=new MQQueue Manager("qmgrname",properties);

来源: http: //publib.boulder.ibm.com/infocenter/wmqv7/v7r1/index.jsp ?topic=%2Fcom.ibm.mq.doc%2Fun11010_.htm

但是,我可以在 MQQueueManager 上使用连接名称列表,但没有提供类似的东西。

你能帮帮我吗?我正在使用 7.0.1.6 罐子

4

2 回答 2

3

请参阅信息中心中的将客户机通道定义表与用于 Java 的 WebSphere MQ 类一起使用。我已经链接到 V7.0 信息中心,因为您提到这是您正在使用的版本,但在以后的版本中它的工作方式相同。

在通道定义中出现多实例 QMgrs 和相应的多实例 CONNAME 属性之前,有更常见的客户端通道定义表或 CCDT。CCDT 包含一个或多个 QMgrs 的任意数量通道的 CLNTCONN 定义。当多个条目在 QMName 字段中具有相同的值时,它们被视为一个组。(注意,CCDT 中的 QMName不需要与实际的 QMgr 名称匹配。这将迫使您使用非唯一的 QMgr 名称,这不是一个好习惯。它只是 CCDT 中用于识别通道组的索引。 )

为了更好地理解 CCDT,请阅读Infocenter 中将WebSphere MQ 客户端应用程序连接到队列管理器下的主题,特别是通道权重和亲和性示例、客户端通道定义表的角色MQCONN 调用示例。(从左侧的目录中访问这些内容。在框架的最右上角是一个按钮,如果您迷路了,该按钮会将目录转到您所在的任何页面。)

CCDT 的一个“陷阱”是其中的每个频道名称都必须是唯一的。这与多实例 CONNAME 不同,后者在不同的 IP 地址上查找完全相同的通道。这是因为 CCDT 文件是使用 QMgr 上的 MQSC 命令维护的。在队列管理器管理的名称空间内,所有对象名称都必须是唯一的。在 QMgr 上定义通道时,每个通道必须具有唯一的名称。在 CCDT 的情况下,条目是使用 CLNTCONN 通道定义的。虽然这些指向在其他QMgrs 上定义的 SVRCONN 通道,但因为所有 CLNTCONN 通道都定义在同一个命名空间中,所以它们必须是唯一的。

为了进一步说明这一点,请考虑配置一个名为 PAYROLL 的应用程序。您可以根据应用名称和 QMgr 名称来构造通道名称。这会产生一个通道,该通道描述从左到右读取的 from-->to 关系。例如,要为三个 QMgrs 定义 CCDT,您需要:

* On any QMgr
DEF CHL(PAYROLL.QMGR1) CHLTYPE(CLNTCONN) QMNAME(PAY) CONNAME("qm1host(1414)")
DEF CHL(PAYROLL.QMGR2) CHLTYPE(CLNTCONN) QMNAME(PAY) CONNAME("qm2host(2414)")
DEF CHL(PAYROLL.QMGR3) CHLTYPE(CLNTCONN) QMNAME(PAY) CONNAME("qm3host(3414)")

*On QMgr1
DEF CHL(PAYROLL.QMGR1) CHLTYPE(SVRCONN) 

*On QMgr2
DEF CHL(PAYROLL.QMGR2) CHLTYPE(SVRCONN) 

*On QMgr3
DEF CHL(PAYROLL.QMGR3) CHLTYPE(SVRCONN) 

然后应用程序将 QMgr 名称指定为*PAY,并且 WMQ 客户端代码在三个条目中进行选择。其他参数可用于加权条目和重试顺序,您将在文档中看到这些参数。

注意:显示的示例被精简为说明该概念的基本元素。用于生产实现的 SVRCONN 条目将包括 MCAUSER 和/或通道出口,可能还有 SSL 参数,以及在 V7.1 或更高版本上的一些 CHLAUTH 规则。

于 2012-10-19T20:56:19.797 回答
0

提供多个连接名称允许 MQ 客户端在与队列管理器的现有连接中断时自动重新连接到相同或任何可用的队列管理器。此功能在 MQ C、.NET 和 JMS 客户端中可用。它在 中不可用WebSphere MQ classes for Java

您可以考虑 MQ JMS 客户端,它提供了一组丰富的功能,包括自动客户端重新连接。此链接提供支持自动客户端重新连接功能的客户端的详细信息。该链接需要一些更新,因为它说该功能不支持Managed XMS and managed .NET clients: C#, Visual Basic.

于 2012-10-19T16:55:35.647 回答