【发布时间】:2015-09-16 06:33:25
【问题描述】:
在我的 Java 应用程序中,我使用
获得MQQueue 对象
MQQueue tQueue = qManager.accessQueue(tqName, tqOptions);
队列是一个远程队列。有没有办法获得相应的本地传输队列?
(使用MQ 7.5)
谢谢
【问题讨论】:
在我的 Java 应用程序中,我使用
获得MQQueue 对象
MQQueue tQueue = qManager.accessQueue(tqName, tqOptions);
队列是一个远程队列。有没有办法获得相应的本地传输队列?
(使用MQ 7.5)
谢谢
【问题讨论】:
是的,使用runmqsc 控制台。
首先在命令提示符下运行
runmqsc <qmgr>。
控制台打开后运行
dis qr<remote q> XMITQ
显示远程队列定义使用的传输队列。
更新
另一种方法是使用 PCF 类。
PCFMessageAgent pcfma = new PCFMessageAgent("QM");
PCFMessage pcfCmd = new PCFMessage(MQConstants.MQCMD_INQUIRE_Q);
pcfCmd.addParameter(MQConstants.MQCA_Q_NAME, "Q.REMOTE");
PCFMessage[] pcfResponse = pcfma.send(pcfCmd);
String xmitQName = (String) pcfResponse[0].getParameterValue(MQConstants.MQCA_XMIT_Q_NAME);
System.out.println("XmitQ name " + xmitQName);
【讨论】:
当 MQ 打开一个队列时,它会运行一个名称解析过程来解析要打开哪个本地队列。如果应用程序打开一个 QRemote,它通常会解析为一个传输队列。
找出已解决队列的名称很容易。队列开启成功后向MQ索取即可:
【讨论】:
QLOCAL 以外的唯一时间是在 QMgr 运行名称解析之前。可以说即使那样这也会是一个错误,因为该字段应该是空白的,直到 API 调用返回..