IBM Cloud Docs
将样本应用程序连接到队列管理器

将样本应用程序连接到队列管理器

您可以轻而易举地将应用程序连接到队列管理器。 可以采用多种方式运行应用程序,例如部署在云中。 出于验证目的和此示例的目的,您可以通过自己的计算机(例如笔记本电脑)来运行 IBM MQ 样本应用程序。

通过完成以下任务,您可以:

  1. 通过您自己的计算机使用 IBM MQ 客户机样本来连接到现有队列管理器。
  2. 将测试消息放入队列。
  3. 从队列中取出测试消息。

从 MQ 9.2.2r1 (已发布 25th Mar 2021) 开始,缺省情况下,新部署的队列管理器将在预定义通道上启用 TLS。 如果在 9.2.2r1发布日期或之后创建了队列管理器,那么应遵循本教程的 prerequsites 部分,然后继续 本教程

准备工作

  • 您需要现有队列管理器,可通过遵循 这些指示信息 来创建该队列管理器。
  • 要建立与 MQ on Cloud 队列管理器的安全连接,必须首先 在 MQ 通道上设置 TLS 加密
  • 已授予应用程序访问 IBM MQ 服务实例中队列管理器的许可权。 您已获得此应用程序的 MQ 用户名和 API 密钥(有关指示信息,请遵循配置用于将应用程序连接到队列管理器的访问权指南)。
  • 如果您不打算使用其中一个预定义的 "DEV.QUEUE. " 队列用于放置和获取消息,请遵循 分配用户/组对队列的访问权 指南来配置此队列所需的授权记录。
  • 如果要将 JSON CCDT 用于应用程序,那么必须具有客户机的 9.1.2 (或更高版本) 安装。
  • 在您自己的计算机上已安装 IBM MQ 客户机。
    • 此处下载客户机。
      • 单击 CD 客户机的最新可用版本旁边的 HTTP 链接将转至 Fix Central。 您可以在其中搜索并选择适用于您操作系统平台的相应 Redist(可再分发)客户机捆绑软件。 这将包括样本应用程序。
    • 下载后,将捆绑软件解包到所选位置。
    • 记下包含样本应用程序的目录的完整路径。 对于此任务的其余部分,此路径将被引用为 <PATH_TO_SAMPLE_BIN_DIR>
      • 对于 Windows,这将是上一步中解包的 bin 目录,其位置将取决于您选择用于解包捆绑软件的位置。
      • 对于 Linux,这将是上一步中解包的 samp/bin 目录,其位置将取决于您选择用于解包捆绑软件的位置。

TLS 其他设置

要使用通过 TLS 的连接,我们将需要使用 CCDT 文件指定通道定义。

  1. 打开 Web 浏览器,并浏览到 IBM Cloud中的 MQ on Cloud 服务实例。

  2. 在队列管理器列表中查找队列管理器,然后单击其名称以浏览至队列管理器详细信息页面。

    MQ on Cloud 中的队列管理器列表视图,其中突出显示了队列管理器名称

  3. 单击此页面右上角的“连接信息”按钮。

    您可能还希望下载文本版本 (更易于阅读) 以及队列管理器名称和 URL 的有用源。

    MQ on Cloud 中的 "队列管理器详细信息" 视图,带有突出显示的连接信息按钮

    已打开 "队列管理器连接信息" 对话框,其中突出显示了 JSON CCDT

  4. 在对话框中,单击 "JSON CCDT" 以下载队列管理器的 JSON CCDT 描述,并将其保存在适当的位置:

    • 如果您希望确认通道定义的内容,那么它应该是类似于以下示例的格式:
    {
      "channel": [
        {
          "name": "CLOUD.ADMIN.SVRCONN",
          "clientConnection": {
            "connection": [
              {
                "host": "myqueuemanager.qm.us-south.mq.appdomain.cloud",
                "port": 31500
              }
            ],
            "queueManager": "qm1"
          },
          "transmissionSecurity": {
            "cipherSpecification": "ANY_TLS12_OR_HIGHER",
          },
          "type": "clientConnection"
        },
        ...
      ]
    }
    
  5. 创建密钥库文件

    • 遵循以下指示信息来 创建密钥库文件 以在此应用程序设置中使用。
    • 创建密钥库后,必须设置 MQSSLKEYR 环境变量。

    MQSSLKEYR 是从系统根目录到密钥库文件的完整路径。 请注意,文件名无需后缀 - 因此对于名为 key.kdb 的密钥库,仅指定“key”。

    • Mac/Linux- export MQSSLKEYR=/Users/you/store/key
    • Windows (命令提示符)- set MQSSLKEYR=c:\mystore\key
    • Windows (PowerShell)- $env:MQSSLKEYR=c:\mystore\key

准备连接

在您自己的计算机上打开命令 shell。

  1. 设置 "MQCCDTURL" 变量:

    • Mac/Linux: export MQCCDTURL=file:////Users/you/definitions/connection_info_ccdt.json
    • Windows:set MQCCDTURL=file:///c:/mydefinitions/connection_info_ccdt.json
    • Windows (PowerShell): $env:MQCCDTURL=file:///c:/mydefinitions/connection_info_ccdt.json

    MQCCDTURL 可替换为其他两个环境变量 MQCHLLIB (ccdt 文件目录的完整路径) 和 MQCHLTAB (ccdt 文件的文件名)

  2. 设置“MQSAMP_USER_ID”变量:

    • Mac/Linux: export MQSAMP_USER_ID="<application MQ username>"
    • Windows (命令提示符): set MQSAMP_USER_ID=<application MQ username>
    • Windows (PowerShell): $env:MQSAMP_USER_ID="<application MQ username>"

    应该从此同一命令 shell 运行后续步骤。 { :note}

使用 amqsputc 将消息放入测试队列

注: 请确保已执行以上列出的先决条件步骤,尤其是配置应用程序对队列管理器的访问权。

在先前步骤中使用的同一 shell 中:

  1. run <PATH_TO_SAMPLE_BIN_DIR>/amqsputc DEV.QUEUE.1 <your QMGR name>
    • 其中,<PATH_TO_SAMPLE_BIN_DIR> 是您在上面的“先决条件”部分中记录的样本应用程序 bin 目录的路径。
  2. 系统提示输入密码时,输入应用程序 API 密钥
  3. 输入测试消息。
  4. Enter 键两次以退出 amqsputc 样本。

使用 amqsgetc 取出消息

在先前步骤中使用的同一 shell 中:

  1. run <PATH_TO_SAMPLE_BIN_DIR>/amqsgetc DEV.QUEUE.1 <your QMGR name>
    • 其中,<PATH_TO_SAMPLE_BIN_DIR> 是您在上面的“先决条件”部分中记录的样本应用程序 bin 目录的路径。
  2. 系统提示输入密码时,输入应用程序 API 密钥

这将显示测试消息。

经过很短的一段时间,amqsgetc 样本程序找不到更多消息后应该会结束。

结论

您成功执行了以下操作:

  • 通过您自己的计算机使用样本应用程序连接到队列管理器。
  • 将测试消息放入队列。
  • 从队列中取出测试消息。