【发布时间】:2017-05-31 14:30:47
【问题描述】:
我有 MQ 客户端代码,可以浏览别名队列以获取别名队列的基本对象名称(即别名队列指向的本地队列的名称)。但是,该代码仅在 MQ 客户端连接到与客户端代码在同一主机上运行的 MQ 管理器时有效,但在客户端代码连接到远程主机上的 MQ 管理器时无效。
客户代码:
MQEnvironment.hostname = "192.168.1.3";
MQEnvironment.port = "1415";
MQEnvironment.channel = "ADMIN.SVRCONN";
MQQueueManager mqQueueManager = new MQQueueManager(null);
int openOptions = CMQC.MQOO_BROWSE;// + CMQC.MQOO_RESOLVE_LOCAL_Q;
MQQueue mqQueue = mqQueueManager.accessQueue("AN.ALIAS.QUEUE.NAME", openOptions);
String resolvedName = mqQueue.getResolvedQName();
// resolvedName is null when the MQ Manager is on a remote host
System.out.println("Resolved Queue Name: " + resolvedName);
当 Alias Queue 的已解析队列名称为 null 时,MQ Manager 的错误日志显示以下单个条目:
AMQ9208: Error on receive from host devlaptop (192.168.1.5).
EXPLANATION:
An error occurred receiving data from devlaptop (192.168.1.5) over TCP/IP.
This may be due to a communications failure.
ACTION:
The return code from the TCP/IP (recv) call was 10054 (X'2746'). Record these
values and tell the systems administrator.
客户端代码是否可以获取远程 MQ 管理器的别名队列的基本对象名称?如果是这样,怎么办?我在某处缺少远程权限吗?还是我的客户代码openOptions 错了?
注意:队列管理器中的别名队列或任何其他队列都不是集群的。
【问题讨论】: