通过MQ Explorer连接

时间:2019-03-08 21:40:57

标签: ibm-mq

我想通过mq资源管理器访问队列管理器,但出现错误:

  • 无法建立与队列管理器的连接-原因2538。(AMQ4059) 无法建立与队列管理器的连接-原因2538。(AMQ4059)
  • 严重性:10(警告)
  • 说明:尝试连接到队列管理器失败。这可能是因为队列管理器配置不正确,以允许来自该系统的连接,或者连接已断开。
  • 响应:重试该操作。如果错误仍然存​​在,请检查问题确定信息以查看是否已记录任何信息。

我遵循https://www-01.ibm.com/support/docview.wss?uid=swg21623113中的所有说明,以使mq资源管理器能够访问mq服务器,但仍然没有运气。

IBM MQ Server详细信息:

  • 版本:8
  • 操作系统:Centos
  • 在docker容器中运行
  • 使用端口1417,因为我的1414端口不可用于其他MQ服务器
  • 监听器正在运行并指向端口1417
  • 定义频道的方式与我共享的链接中所描述的相同(我已禁用其中描述的所有安全功能)
  • 我有一个示例Java App,可以放置/获取消息,并且运行正常

MQ Explorer详细信息:

我原本希望在我的MQ Server中收到一条错误消息以了解该问题,但令人惊讶的是根本没有错误消息...

Screenshot

3 个答案:

答案 0 :(得分:2)

您已声明队列管理器在容器中运行,而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

答案 1 :(得分:0)

您没有说队列管理器运行在哪个版本的IBM MQ上。即v7.5,v8.0,v9.0或v9.1。

您是否授予CHLAUTH使用SYSTEM.ADMIN.SVRCONN通道的权限?您很可能被支持规则阻止了。

此外,如果您使用的是IBM MQ v8.0或更高版本,则CONNAUTH可能会阻止您。

这里有2个不错的链接可引导您完成问题。

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/blocked_by_chlauth_why?lang=en

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.mig.doc/q001110_.htm

答案 2 :(得分:0)

您已尝试使用以下连接详细信息将MQ Explorer连接到队列管理器:-

  • 主机名或IP地址:0.0.0.0
  • 端口号:1417
  • 服务器连接通道:SYSTEM.ADMIN.SVRCONN

并且您已经收到返回码MQRC_HOST_NOT_AVAILABLE(2358),其中指出无法访问网络地址。

此错误的常见原因包括没有使用该端口运行TCP.IP侦听器,但是您已经告诉我们您正在运行侦听器。

您使用的IP地址是问题。将您的MQ Explorer配置中的IP地址更改为运行队列管理器的实际IP地址。如果MQ Explorer和Queue Manager在同一台机器上(在同一容器中),则可以使用localhost主机名或IP地址127.0.0.1,否则,请使用为该机器分配的IP地址。从您的屏幕截图看来,这可能是192.168。*地址。