QueueManager 未连接给定异常:MQJE001:
QueueManager is not connecting given Exception : MQJE001:
我写了一个 Java MQ 客户端来编写和读取消息,然后去了多个站点了解了一些关于 MQ 的知识。当我 运行 客户端代码给出错误如下:
MQJE001: Completion Code '2', Reason '2540'.
我输入了一条日志语句,它在下面的地方显示异常
private void selectQMgr() throws MQException {
logger.info("qMgrName in selectQMgr method: "+ qMgrName);
qMgr = new MQQueueManager(qMgrName, mqht);
mqht 是哈希表引用,其中包含我从脚本传递的主机名、端口和通道 属性。
我的系统有 v 7.5 MQ 客户端,我使用了所有必需的 jar 进行编译和 运行。
我还去了 /opt/mqm/samp/bin 和 运行 下面的命令
• $ amqsput TESTQ QMGR
• Sample AMQSPUT0 start
• MQCONN ended with reason code 2058
• $ MQCONN ended with reason code 2058
上面给出的错误不确定我是否尝试正确。
我是 MQ 的新手,从下面提到的 IBM 站点阅读后有点困惑:
• 不支持队列管理器组。
• 没有指定名称的队列管理器组。
MQ 连接所需的所有属性都来自支持团队,不确定是什么问题。是不是我的系统连接不上。
请帮忙解决这个问题。提前致谢
有两种连接模型:
绑定模式 - 当应用程序以绑定模式连接到队列管理器时,应用程序必须 运行 在与队列管理器相同的服务器上。该应用程序也没有指定主机、端口号和通道名称。
客户端模式 - 意味着应用程序必须指定主机、端口号和通道名称,因为应用程序与队列管理器不在同一台服务器上。
$ amqsput TESTQ QMGR
IBM 有一个可执行文件的命名标准:
如果可执行文件不以 'c' 结尾(即 amqsput),那么它将被编译并链接到绑定模式。即本地队列管理器
如果可执行文件确实以 'c' 结尾(即 amqsputc),那么它将针对客户端模式进行编译和链接。因此,您需要通过设置 MQCHLLIB & MQCHLTAB environment variables or set the MQSERVER 环境变量来使用 CCDT 文件。
现在在远程服务器上,可以有 1 个或多个队列管理器 运行。每个队列管理器都有自己的 MQ 侦听器侦听端口。即 1414。如果服务器上有 3 个队列管理器 运行,则使用的端口可能是 1414、1415 和 1416 或 14001、14002 和 14003。您需要向 MQAdmin 询问该特定端口的正确端口号队列管理器。
原因代码 2540 (MQRC_UNKNOWN_CHANNEL_NAME) 表示您正在使用未在队列管理器上定义的通道名称。注意:所有 objects 都区分大小写。即 "Test.Chl" 与 "TEST.CHL" 不同。另外,将 MQ Reason Code 页面加入书签,因为它是您需要经常参考的内容。
最后,由于您是 MQ 新手,我强烈建议您参加 MQ Technical Conference (MQTC)。 MQTC 是世界上最大的专门针对 IBM MQ 的会议。超便宜的3天技术培训
我写了一个 Java MQ 客户端来编写和读取消息,然后去了多个站点了解了一些关于 MQ 的知识。当我 运行 客户端代码给出错误如下:
MQJE001: Completion Code '2', Reason '2540'.
我输入了一条日志语句,它在下面的地方显示异常
private void selectQMgr() throws MQException {
logger.info("qMgrName in selectQMgr method: "+ qMgrName);
qMgr = new MQQueueManager(qMgrName, mqht);
mqht 是哈希表引用,其中包含我从脚本传递的主机名、端口和通道 属性。
我的系统有 v 7.5 MQ 客户端,我使用了所有必需的 jar 进行编译和 运行。
我还去了 /opt/mqm/samp/bin 和 运行 下面的命令
• $ amqsput TESTQ QMGR
• Sample AMQSPUT0 start
• MQCONN ended with reason code 2058
• $ MQCONN ended with reason code 2058
上面给出的错误不确定我是否尝试正确。
我是 MQ 的新手,从下面提到的 IBM 站点阅读后有点困惑: • 不支持队列管理器组。 • 没有指定名称的队列管理器组。
MQ 连接所需的所有属性都来自支持团队,不确定是什么问题。是不是我的系统连接不上。
请帮忙解决这个问题。提前致谢
有两种连接模型:
绑定模式 - 当应用程序以绑定模式连接到队列管理器时,应用程序必须 运行 在与队列管理器相同的服务器上。该应用程序也没有指定主机、端口号和通道名称。
客户端模式 - 意味着应用程序必须指定主机、端口号和通道名称,因为应用程序与队列管理器不在同一台服务器上。
$ amqsput TESTQ QMGR
IBM 有一个可执行文件的命名标准:
如果可执行文件不以 'c' 结尾(即 amqsput),那么它将被编译并链接到绑定模式。即本地队列管理器
如果可执行文件确实以 'c' 结尾(即 amqsputc),那么它将针对客户端模式进行编译和链接。因此,您需要通过设置 MQCHLLIB & MQCHLTAB environment variables or set the MQSERVER 环境变量来使用 CCDT 文件。
现在在远程服务器上,可以有 1 个或多个队列管理器 运行。每个队列管理器都有自己的 MQ 侦听器侦听端口。即 1414。如果服务器上有 3 个队列管理器 运行,则使用的端口可能是 1414、1415 和 1416 或 14001、14002 和 14003。您需要向 MQAdmin 询问该特定端口的正确端口号队列管理器。
原因代码 2540 (MQRC_UNKNOWN_CHANNEL_NAME) 表示您正在使用未在队列管理器上定义的通道名称。注意:所有 objects 都区分大小写。即 "Test.Chl" 与 "TEST.CHL" 不同。另外,将 MQ Reason Code 页面加入书签,因为它是您需要经常参考的内容。
最后,由于您是 MQ 新手,我强烈建议您参加 MQ Technical Conference (MQTC)。 MQTC 是世界上最大的专门针对 IBM MQ 的会议。超便宜的3天技术培训