【问题标题】:IBM MQ Client running under Windows Docker在 Windows Docker 下运行的 IBM MQ 客户端
【发布时间】:2023-03-16 20:56:01
【问题描述】:

我正在寻找在 Windows Docker 容器下运行 IBM MQ 客户端的解决方案。我知道 Docker Hub 只提供 MQ 的 Linux 实现,但是,我不需要完整的 MQ 服务器功能。相反,我希望有一种方法可以安装 MQ 客户端并简单地连接到另一个(非 Docker)系统上定义的通道和队列。为了解决这个问题,我做了以下事情:

  1. 启动在命令提示符下运行的 Windows Docker 容器(用于概念验证)

  2. 复制并扩展MQ客户端9.0.0.8-IBM-MQC-Win64.zip

  3. 静默安装的 MQ 客户端(例如 msiexec /i "c:\temp\Windows\MSI\IBM MQ.msi" /l*v c:\temp\install.log /q TRANSFORMS="1033.mst" AGREETOLICENSE="yes" ADDLOCAL="Client")。

    注意:安装成功且没有错误

  4. 已建立所需的环境变量(MQServer 等)和更新的路径(类路径、lib、include 等)。

  5. 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++ 运行时库的要求。

标签: docker ibm-mq


【解决方案1】:

一种可能的替代方法(更轻的)方法:使用 IBM mq-golang 包编写一个 Go 应用程序并将其部署在您的 Windows docker 容器中。

【讨论】:

  • Go 仍然需要 MQ 客户端(redist)。
【解决方案2】:

我建议您使用 IBM MQ Redistributable 客户端安装,而不是使用 msiexec 安装完整客户端安装。这被打包为一个简单的 zip 文件,您可以将其解压缩到您选择的任何位置。


您可以在知识中心页面Redistributable IBM MQ clients 上找到有关 Redistributable 客户端的更多信息。

您可以使用以下链接下载 IBM MQ Redistributable 客户端:


IBM 知识中心页面 Limitations and other considerations for redistributable clients 给出了这些要求:

Windows C 运行时库
您的计算机上可能已经有这些库,但如果没有,则需要下载并安装以下 Microsoft C/C++ 运行时库:

  • Microsoft Visual C++ Redistributable 2008
  • Microsoft Visual C++ Redistributable 2012

可以在The latest supported Visual C++ downloads 找到每个库的可再分发下载的下载链接。

【讨论】:

  • 感谢 Josh,非常感谢我们在这里经历的思考过程。安装 MQ redist 非常简单。解压缩到一个文件夹,将该文件夹添加到系统路径,安装 VC redists(在我的情况下,我需要 vcredist 2012 x64)
  • 感谢您授予赏金,我很感激。
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 2016-12-14
  • 1970-01-01
  • 2022-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多