【发布时间】:2023-03-16 20:56:01
【问题描述】:
我正在寻找在 Windows Docker 容器下运行 IBM MQ 客户端的解决方案。我知道 Docker Hub 只提供 MQ 的 Linux 实现,但是,我不需要完整的 MQ 服务器功能。相反,我希望有一种方法可以安装 MQ 客户端并简单地连接到另一个(非 Docker)系统上定义的通道和队列。为了解决这个问题,我做了以下事情:
-
启动在命令提示符下运行的 Windows Docker 容器(用于概念验证)
-
复制并扩展MQ客户端
9.0.0.8-IBM-MQC-Win64.zip -
静默安装的 MQ 客户端(例如
msiexec /i "c:\temp\Windows\MSI\IBM MQ.msi" /l*v c:\temp\install.log /q TRANSFORMS="1033.mst" AGREETOLICENSE="yes" ADDLOCAL="Client")。注意:安装成功且没有错误
-
已建立所需的环境变量(MQServer 等)和更新的路径(类路径、lib、include 等)。
-
Ping MQ 服务器系统以验证连通性。
我尝试使用amqsputc.exe MYDOCKER.DS.Q 将消息放入经过验证的有效队列中。立即返回代码是MQCONNX ended with reason code 2195。不幸的是,2195 非常笼统,没有其他日志可供查看。
我了解在 VM 下运行 MQ 与在容器下运行 MQ 之间的区别,但是由于我只需要客户端访问权限,我希望 MQ 客户端足够轻量级以可用。
如果 MQ 客户端不是一个可行的方向,是否有可以通过云连接实现的 MQ 解决方案?我的旧应用程序是基于 Windows 的,并且依赖 MQ 进行作业消息传递。
【问题讨论】:
-
我建议您为此查看 MQ Redist 客户端,您只需解压缩文件,无需安装。您的应用程序是用什么语言编写的?如果是 .NET,您可以转到只需要一个 dll 的托管模式。如果是java可以获取jar文件等,请提供更多详细信息以帮助找到解决方案。
-
应该有一个 AMQERR01.LOG 和可能的 FDC 文件,以进一步详细说明 2195 (MQRC_UNEXPECTED_ERROR) 中报告的问题是什么。
-
感谢您的意见。第 2 步中提到的 .zip 文件是 MQ Redist 客户端,所以我认为我在正确的轨道上使用它。我的程序是使用 C/C++ 编写的旧应用程序,在直接 Windows 甚至 VM 下,MQ 客户端界面工作正常。将实际应用程序放在一边,我只是尝试通过使用 IBM“amqsputc.exe”和“amqsgetc.exe”实用程序发布消息然后从队列中弹出消息来验证容器下的 IBM MQ 客户端安装经理。可悲的是,在我的容器实例中的任何地方都没有创建 AMKERR*.log
-
你有没有得到这个工作?
-
@DaBozUK 我在上面的 cmets 中发布了一个答案,其中包含指向 Redist 客户端的链接以及对 Microsoft C/C++ 运行时库的要求。