我有MQ客户端的代码,可以浏览别名队列,以获得别名队列的基本对象名称(即本地队列该别名队列指向名称)。但是,仅当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);
当别名队列的解析队列名称为空,则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管理器的Alias队列的基础对象名称?如果是这样,怎么样?我在某处丢失了远程权限吗?或者我的客户代码openOptions
错误?
注意:队列管理器中的别名队列或任何其他队列不会群集。
@T,为你解释,客户端关闭而不关闭连接一定是因为我杀的应用程序,因此不会给应用程序运行的机会'mqQueue.close();'和'mqManager.close( );'。关于别名队列本身,我可以确认它不以任何方式聚集。 –
在这种情况下,请使用用于填充“OPEN”的QMgr和队列名称的值更新问题。 –
@JoshMc,别名队列的目标是一个本地队列,它也没有被聚集。这些队列管理器中完全没有群集队列。 –