【问题标题】:Connect to multiple queue managers in different servers连接到不同服务器中的多个队列管理器
【发布时间】:2021-01-14 23:19:57
【问题描述】:

我正在尝试将基于 PaaS IBM MQ 客户端的 C++ 应用程序(使用 MQCONNX)连接到两个不同的队列管理器,每个队列管理器基于不同的服务器(一个在 PaaS 服务器中,另一个在 Unix 服务器中) .不幸的是,我无法做到这一点,因为当我尝试连接到第二台服务器时收到一条消息,说这是不可能的,因为它已连接到第一个队列管理器。我正在使用两个不同的 MQHCONN 连接,每个队列管理器一个,但问题仍然存在。

我已经查看了这个链接,但我仍然有一些疑问,例如我应该从哪个服务器将 CCDT 复制到客户端?

https://www.ibm.com/support/pages/connecting-mq-clients-multiple-queue-managers-client-channel-definition-table-ccdt

非常感谢任何帮助,甚至是如何使用 CCDT 的快速示例,因为现在我完全陷入困境。

非常感谢您的任何帮助。

【问题讨论】:

  • 您能否提供可以重现错误的示例代码。您得到什么确切的 MQRC 错误代码?如今,可以使用runmqsc -n 独立于 qmgr 生成 CCDT。在最新版本中,您甚至可以使用 JSON 格式的 CCDT。您使用的是什么版本的 MQ 客户端?

标签: c++ ibm-mq


【解决方案1】:

假设队列管理器 1 被称为 MQG1,队列管理器 2 被称为 MQG2,可以分别使用连接名称 machine1.com(1701)machine2.com(1702) 以及使用通道名称 MQG1.SVRCONNMQG2.SVRCONN 找到它们分别,您可以在您的客户端应用程序机器上创建您的 CCDT,因此:-

runmqsc -n

将这些命令发送到runmqsc:-

DEFINE CHANNEL(MQG1.SVRCONN) CHLTYPE(CLNTCONN) CONNAME('machine1.com(1701)') QMNAME(MQG1)
DEFINE CHANNEL(MQG2.SVRCONN) CHLTYPE(CLNTCONN) CONNAME('machine2.com(1702)') QMNAME(MQG2)

然后您可以编码您的 2 x MQCONN(或 MQCONNX,如果您需要在连接上指定任何其他内容)因此:-

#include <cmqc.h>                    /* Includes for MQI constants */
#include <cmqstrc.h>                 /* Convert MQRC into string   */

MQHCONN hConn1 = MQHC_UNUSABLE_HCONN;
MQHCONN hConn2 = MQHC_UNUSABLE_HCONN;
MQCHAR  QMName1[MQ_Q_MGR_NAME_LENGTH] = "MQG1";
MQCHAR  QMName2[MQ_Q_MGR_NAME_LENGTH] = "MQG2";
MQLONG  CompCode, Reason;

MQCONN(QMName1,
       &hConn1,
       &CompCode,
       &Reason);
if (CompCode)
{
  printf("MQCONN to %s failed with reason code %s (%d)\n", QMName1, MQRC_STR(Reason), Reason); 
}
MQCONN(QMName2,
       &hConn2,
       &CompCode,
       &Reason);
if (CompCode)
{
  printf("MQCONN to %s failed with reason code %s (%d)\n", QMName2, MQRC_STR(Reason), Reason); 
}

请注意链接程序的方式。如果你尝试建立两个本地连接,你会得到一个返回码MQRC_ANOTHER_Q_MGR_CONNECTED。确保您与客户端库链接,设置连接选项MQCNO_CLIENT(这意味着您必须使用MQCONNX)或设置环境变量MQ_CONNECT_TYPE=CLIENT

您可能会发现以下博客文章有用的补充阅读:-

IBM MQ Little Gem #30: MQ_CONNECT_TYPE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2018-06-28
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多