繁体   English   中英

连接到队列管理器JMS时的MQ错误代码2058

[英]MQ error code 2058 when connecting to queue manager JMS

我正在尝试使用MQ api连接到队列管理器,我能够连接到队列管理器

MQQueueManager queueManager=new MQQueueManager(qmgrName);
queueManager.accessQueue(qName,MQOO_OUTPUT);

但是当我尝试使用JMS连接到同一个队列管理器时,它失败了2058代码。不确定我是否遗漏了JMS的内容

    MQQueueConnectionFactory qcf=new MQQueueConnectionFactory();
    qcf.setQueueManager(qmgrName);
    qcf.setPort(1414);
    qcf.setHostname("localhost");
    qcf.createQueueConnection();

如此处所述 ,MQRC 2058表示无效的队列管理器名称或队列管理器名称未知。 但正如您所提到的,使用MQ Base Java的绑定模式连接成功,队列管理器名称显示为有效。

更新:

抱歉,我的代码误导了您,并认为您正在尝试使用JMS进行客户端模式连接。 您无需为绑定模式连接设置主机和端口。

由于未设置传输类型,因此使用默认值WMQ_CM_BINDINGS。 建议您验证队列管理器名称。

要连接“BINDINGS”,队列管理器必须是本地的。 您是否尝试连接到远程队列管理器? 如果是这样,您需要以“客户端”身份进行连接。 另外,请检查以确保qmgr正在侦听您指定的端口。

您在本地主机上有两个或更多队列管理器。 在第一个示例中,您将以绑定模式进行连接,以便按名称选择队列管理器,并获得正确的队列管理器。 在第二个示例中,连接是通过客户端连接进行的,因此由1414上的QMgr监听接收,这不是您想要的那个,因此连接被拒绝。

请注意,如果两个QMgrs在1414上都有一个监听器,则连接将成功或失败,具体取决于首先启动的QMgr。 只有一个可以绑定到该端口,因此第一个启动它可以使用它。 这可能会导致行为看似不一致。

请参阅JMS的IBM MQ类的连接模式,其中建议“要更改IBM MQ类用于JMS的连接选项,请修改连接工厂属性CONNOPT 可接受的值在页面上提供,但您几乎总是希望它为标准绑定( MQCNO_STANDARD_BINDING )设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM