队列管理器未连接给定异常:MQJE001:

时间:2019-02-05 15:17:32

标签: java ibm-mq

我去了多个站点,对MQ有了一些了解之后,我写了一个Java 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连接的所有必需属性不确定问题是什么。是我的系统没有连接。

请对此提供帮助。在此先感谢

1 个答案:

答案 0 :(得分:1)

有两种连接模型:

  1. 绑定模式-当应用程序以绑定模式连接到队列管理器时,该应用程序必须与队列管理器在同一服务器上运行。该应用程序也不指定主机,端口号和通道名称。

  2. 客户端模式-意味着应用程序必须指定主机,端口号和通道名称,因为该应用程序与队列管理器不在同一服务器上。

  

$ amqsput TESTQ QMGR

IBM对可执行文件有一个命名标准:

  1. 如果可执行文件不以'c'结尾(即amqsput),则将其编译并链接为绑定模式。即本地队列管理器

  2. 如果可执行文件以'c'结尾(即amqsputc),则将其编译并链接为客户端模式。因此,您需要通过设置MQCHLLIB & MQCHLTAB环境变量来使用CCDT文件或设置MQSERVER环境变量。

现在,在远程服务器上,可以有1个或多个正在运行的队列管理器。每个队列管理器将在端口上侦听自己的MQ侦听器。即1414。如果服务器上正在运行3个队列管理器,则使用的端口可能是1414、1415和1416或14001、14002和14003。您将需要向MQAdmin查询该特定队列管理器的正确端口号。 / p>

原因代码2540(MQRC_UNKNOWN_CHANNEL_NAME)表示您使用的队列名未在队列管理器上定义。注意:所有对象均区分大小写。即“ Test.Chl”与“ TEST.CHL”不同。另外,为MQ Reason Code页面添加书签,因为它是您经常需要引用的内容。

最后,由于您不熟悉MQ,我强烈建议您参加MQ Technical Conference(MQTC)。 MQTC是世界上最大的,专门讨论IBM MQ的会议。为期3天的技术培训,价格超低。