我想通过 mq explorer 访问队列管理器,但出现错误:
- 无法建立与队列管理器的连接 - 原因 2538。(AMQ4059) 无法与队列管理器建立连接 - 原因 2538。(AMQ4059)
- 严重性:10(警告)
- 说明: 尝试连接到队列管理器失败。这可能是因为队列管理器未正确配置为允许来自该系统的连接,或者连接已断开。
- 响应:重试该操作。如果错误仍然存在,请检查问题确定信息以查看是否记录了任何信息。
我按照 https://www-01.ibm.com/support/docview.wss?uid=swg21623113 中的所有说明进行操作为了让 mq explorer 能够访问 mq 服务器,但仍然没有成功。
IBM MQ 服务器详细信息:
- 版本:8
- 操作系统:Centos
- 在 Docker 容器中运行
- 使用端口 1417,因为我的 1414 端口不可用于其他 MQ 服务器
- 监听器已启动并指向端口 1417
- channel 的定义与我分享的链接中的描述一致(我按照描述禁用了所有安全功能)
- 我有一个示例 Java 应用程序,可以放置/获取消息,并且运行良好
MQ 资源管理器详细信息:
- 还可以在另一个 docker 容器中运行,这要归功于 https://github.com/ibm-messaging/mq-container/tree/master/incubating/mq-explorer
- 我可以从 xterm telnet MQ Server,因此不存在连接问题
- 虽然我禁用了所有安全功能,但我也尝试在服务器和 xterm 上创建相同的用户名,但也不起作用。
我原本希望在 MQ 服务器中收到错误消息来了解问题,但令人惊讶的是根本没有错误消息......
最佳答案
您已经声明您的队列管理器正在一个容器中运行,而您的 MQ Explorer 正在另一个容器中运行。我注意到您提供了 0.0.0.0 作为主机名,但运行 MQ Explorer 的容器上没有运行队列管理器!
如果您运行以下命令(替换为运行队列管理器的容器的 ID),您应该获得 docker 子网上容器的 IP 地址。尝试在 MQ Explorer 中使用该 IP 地址而不是 0.0.0.0:
docker inspect --format "{{ .NetworkSettings.IPAddress }}" <QM container>
如果您的容器位于不同的 docker 网络上,那么您将需要运行以下命令,并将其替换为您为 docker 网络指定的名称:
docker inspect --format "{{ .NetworkSettings.Networks.<Network Name>.IPAddress }}" <QM container>
此外,当您创建队列管理器容器时,您是否记得公开您尝试使用的 1417 端口?默认情况下mq-container
示例仅公开以下端口:1414、9157 和 9443。当您运行容器时,您需要公开端口,但提供 --publish-all --publish 1417
当你运行容器时。例如:
docker run -d -e LICENSE=accept --publish-all --publish 1417 ibmcom/mq
关于ibm-mq - 通过 MQ Explorer 连接容器中的远程队列管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55071393/