【问题标题】:MQQueueManager multiple instance in javajava中的MQQueueManager多实例
【发布时间】:2012-10-10 03:34:20
【问题描述】:

我正在尝试将 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 罐子

【问题讨论】:

    标签: java ibm-mq multiple-instances


    【解决方案1】:

    请参考信息中心的Using a client channel definition table with WebSphere MQ classes for Java。我已经链接到 V7.0 信息中心,因为您提到这是您正在使用的版本,但在以后的版本中它的工作原理相同。

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

    为了更好地理解 CCDT,请阅读 Infocenter 中Connecting WebSphere MQ client applications to queue managers 下的主题,尤其是渠道权重和亲和性示例客户渠道定义表的作用 em> 和 MQCONN 调用示例。 (从左侧的目录访问这些内容。在框架的最右上角是一个按钮,如果您迷路了,该按钮会将目录转到您所在的任何页面。)

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多