将样本应用程序连接到队列管理器
您可以轻而易举地将应用程序连接到队列管理器。 可以采用多种方式运行应用程序,例如部署在云中。 出于验证目的和此示例的目的,您可以通过自己的计算机(例如笔记本电脑)来运行 IBM MQ 样本应用程序。
通过完成以下任务,您可以:
- 通过您自己的计算机使用 IBM MQ 客户机样本来连接到现有队列管理器。
- 将测试消息放入队列。
- 从队列中取出测试消息。
从 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
目录,其位置将取决于您选择用于解包捆绑软件的位置。
- 对于 Windows,这将是上一步中解包的
- 从此处下载客户机。
TLS 其他设置
要使用通过 TLS 的连接,我们将需要使用 CCDT 文件指定通道定义。
-
打开 Web 浏览器,并浏览到 IBM Cloud中的 MQ on Cloud 服务实例。
-
在队列管理器列表中查找队列管理器,然后单击其名称以浏览至队列管理器详细信息页面。
-
单击此页面右上角的“连接信息”按钮。
您可能还希望下载文本版本 (更易于阅读) 以及队列管理器名称和 URL 的有用源。
-
在对话框中,单击 "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" }, ... ] }
-
创建密钥库文件
- 遵循以下指示信息来 创建密钥库文件 以在此应用程序设置中使用。
- 创建密钥库后,必须设置 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。
-
设置 "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 文件的文件名)
- Mac/Linux:
-
设置“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}
- Mac/Linux:
使用 amqsputc 将消息放入测试队列
注: 请确保已执行以上列出的先决条件步骤,尤其是配置应用程序对队列管理器的访问权。
在先前步骤中使用的同一 shell 中:
- run
<PATH_TO_SAMPLE_BIN_DIR>/amqsputc DEV.QUEUE.1 <your QMGR name>
- 其中,
<PATH_TO_SAMPLE_BIN_DIR>
是您在上面的“先决条件”部分中记录的样本应用程序 bin 目录的路径。
- 其中,
- 系统提示输入密码时,输入应用程序 API 密钥。
- 输入测试消息。
- 按
Enter
键两次以退出 amqsputc 样本。
使用 amqsgetc 取出消息
在先前步骤中使用的同一 shell 中:
- run
<PATH_TO_SAMPLE_BIN_DIR>/amqsgetc DEV.QUEUE.1 <your QMGR name>
- 其中,
<PATH_TO_SAMPLE_BIN_DIR>
是您在上面的“先决条件”部分中记录的样本应用程序 bin 目录的路径。
- 其中,
- 系统提示输入密码时,输入应用程序 API 密钥。
这将显示测试消息。
经过很短的一段时间,amqsgetc 样本程序找不到更多消息后应该会结束。
结论
您成功执行了以下操作:
- 通过您自己的计算机使用样本应用程序连接到队列管理器。
- 将测试消息放入队列。
- 从队列中取出测试消息。