使用Hashtable创建MQQueueManager时遇MQJE001:完成码2,原因码2538
解决MQJE001: Completion Code '2', Reason '2538' 错误
Reason 2538对应MQRC_HOST_NOT_AVAILABLE,本质是Java客户端无法连接到目标MQ队列管理器,以下是针对你的场景的排查步骤和修复方案:
1. 补全代码缺失的关键变量
你的代码里CHANNEL变量未定义,这是核心问题!MQ连接必须指定服务器连接通道,先补上这个变量(替换为你实际使用的通道名称,默认通道可使用SYSTEM.DEF.SVRCONN):
static private String CHANNEL = "SYSTEM.DEF.SVRCONN";
2. 检查MQ服务状态
- 执行
dspmq命令,确认队列管理器QM1的状态为RUNNING,若未启动则执行strmqm QM1启动。 - 进入QM1的命令行控制台:
runmqsc QM1,执行DISPLAY LISTENER查看监听配置,确认端口为1417且监听状态是STARTED。若监听未启动,执行START LISTENER;若端口不符,修改配置后重启监听。
3. 验证网络连通性
- 在运行代码的机器上,用
telnet localhost 1417或nc -zv localhost 1417测试端口是否能连通。连接失败则说明端口未开放或MQ监听未正常启动。 - 若MQ服务器在远程,需检查防火墙是否允许1417端口的TCP流量。
修正后的完整代码示例(含异常处理)
import com.ibm.mq.*; import java.util.Hashtable; public class MQTest { static private int PORT = 1417; static private String HOST = "localhost"; static private String QMANAGER = "QM1"; static private String QUEUE = "Q1"; static private String CHANNEL = "SYSTEM.DEF.SVRCONN"; public static void main(String[] args) { Hashtable<String, Object> props = new Hashtable<>(); MQQueueManager qMgr = null; MQQueue queue = null; props.put(MQConstants.CHANNEL_PROPERTY, CHANNEL); props.put(MQConstants.PORT_PROPERTY, PORT); props.put(MQConstants.HOST_NAME_PROPERTY, HOST); try { qMgr = new MQQueueManager(QMANAGER, props); System.out.println("成功连接到队列管理器: " + QMANAGER); int openOptions = MQConstants.MQOO_OUTPUT; queue = qMgr.accessQueue(QUEUE, openOptions); MQPutMessageOptions pmo = new MQPutMessageOptions(); pmo.options = MQConstants.MQPMO_ASYNC_RESPONSE; MQMessage mqMessage = new MQMessage(); String message = "Test"; System.out.println("向队列写入消息: " + QUEUE); mqMessage.writeString(message); queue.put(mqMessage, pmo); System.out.println("消息发送成功"); } catch (MQException e) { System.err.println("MQ错误: Completion Code " + e.completionCode + ", Reason " + e.reasonCode); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (queue != null) queue.close(); if (qMgr != null) qMgr.disconnect(); } catch (MQException e) { e.printStackTrace(); } } } }
内容的提问来源于stack exchange,提问作者Chenhao Dong
相关产品推荐
相关产品推荐

