【问题标题】:How to get MQ Cluster information using Programmable Command Format?如何使用可编程命令格式获取 MQ 集群信息?
【发布时间】:2016-05-19 19:02:56
【问题描述】:

我有一个 mq 集群设置,它有几个队列管理器,一些是完整存储库,一些是部分存储库。
一个完整的存储库应该保存有关整个集群的信息(元数据?)。
部分存储库将保存有关集群的一些信息。
如何使用可编程命令格式收集有关整个集群的信息?
有关主机、队列管理器、完整和部分存储库的信息,集群队列等......

更新 1
我尝试了以下代码,但这不会返回集群信息。

PCFMessageAgent agent = new PCFMessageAgent(queueManager);
agent.setCheckResponses(false);
PCFMessage[] responses;
PCFMessage request = new PCFMessage(MQConstants.MQCMD_INQUIRE_CLUSTER_Q_MGR);
request.addParameter(MQConstants.MQCA_CLUSTER_Q_MGR_NAME, queueManager);

responses = agent.send(request);
String clusterName = (String)responses[0].getParameterValue(MQConstants.MQCA_CLUSTER_NAME);
String clusterInfo = (String)responses[0].getParameterValue(MQConstants.MQIACF_CLUSTER_INFO);
logger.info("Cluster Name [" + clusterName + "]");
logger.info("Cluster Information [" + clusterInfo + "]");

最后一行打印出一个空值。

更新 2 下面的答案表明MQCMD_INQUIRE_CLUSTER_Q_MGR 等同于runmqsc DISPLAY CLUSQMGR(*) 命令。以下是此命令的输出

display clusqmgr(*)
     4 : display clusqmgr(*)
AMQ8441: Display Cluster Queue Manager details.
   CLUSQMGR(QM_FR1)                        CHANNEL(TO.QM_FR1)
   CLUSTER(CLUSTER1)                    
AMQ8441: Display Cluster Queue Manager details.
   CLUSQMGR(QM_FR2)                        CHANNEL(TO.QM_FR2)
   CLUSTER(CLUSTER1)                    
AMQ8441: Display Cluster Queue Manager details.
   CLUSQMGR(QM_PR1)                        CHANNEL(TO.QM_PR1)
   CLUSTER(CLUSTER1)                    
AMQ8441: Display Cluster Queue Manager details.
   CLUSQMGR(QM_PR2)                        CHANNEL(TO.QM_PR2)
   CLUSTER(CLUSTER1)                    
AMQ8441: Display Cluster Queue Manager details.
   CLUSQMGR(QM_PR3)                        CHANNEL(TO.QM_PR3)
   CLUSTER(CLUSTER1)                    
AMQ8441: Display Cluster Queue Manager details.
   CLUSQMGR(QM_PR3)                        CHANNEL(TO.QM_PR3)
   CLUSTER(CLUSTER1)                    

我期待在我提供的代码中与 PCF 有类似的响应,但我没有得到此信息。
所以问题是 如何使用 PCF 获取此信息?以上输出适用于完整的存储库队列管理器。

【问题讨论】:

  • 我不知道我能说多少种方式。从您的代码中删除试图打印出 INPUT ONLY 属性 MQIACF_CLUSTER_INFO 的行,并将其替换为我链接到您需要的页面上的任何属性。您已经提供了 MQSC 命令的输出,显示了 CLUSQMGR 属性、CLUSTER 属性和 CHANNEL 属性。这些可以在我的答案的链接页面上找到,但为了帮助您,它们的 PCF 常量是 MQCA_CLUSTER_Q_MGR_NAME、MQCA_CLUSTER_NAME、MQCACH_CHANNEL_NAME。

标签: ibm-mq


【解决方案1】:

使用以下 PCF 命令

  • 查询集群队列管理器 (MQCMD_INQUIRE_CLUSTER_Q_MGR),它相当于 MQSC 命令 DISPLAY CLUSQMGR。在链接页面中,您可以看到以ClusterQMgrAttrs 为标题的部分中列出的所有可能的输出参数。您可以删除代码中尝试检索 MQIACF_CLUSTER_INFO 的值的行 - INPUT-ONLY 参数 - 并将该行替换为该部分中列出的任何一个参数以检索任何信息正是您想要这个集群队列管理器。
  • 使用 MQIACF_CLUSTER_INFO 参数查询队列 (MQCMD_INQUIRE_Q),它等效于 MQSC 命令 DISPLAY QUEUE(*) CLUSINFO。请注意,MQIACF_CLUSTER_INFO 参数是此命令的输入限定符,它会导致集群队列以及本地队列作为答案返回。

正如您正确指出的那样,只有完整的存储库队列管理器了解有关集群的所有信息,因此您需要对该队列管理器进行查询才能了解完整情况。

【讨论】:

  • 我试过了,MQIACF_CLUSTER_INFO参数只在查询集群队列管理器上,返回值为null。有什么想法吗?
  • 我已经更新了我的答案。 CLUSINFO 参数在查询队列中可用。您可以通过发出等效的 MQSC 命令看到这一点。当您说该值为空时,您是什么意思?值或什么是空的?您的意思是 QMgr 的回复为零?
  • 当我在 MQIACF_CLUSTER_INFO 上执行 getParamterValue 时,我得到一个空值。打印到控制台打印“null”。我正在针对完整的存储库 QM 运行它。该集群还没有任何 Q,但我认为查询集群命令应该仍然有效。
  • 就像我说的,MQIACF_CLUSTER_INFO 是命令的输入——它只是告诉命令包含集群信息。该参数没有输出值。从队列管理器返回的响应将包含您的响应。如果您不确定您将在响应中获得什么样的信息 - 请尝试发出与您要发出的 PCF comamnd 等效的 MQSC 命令(请参阅我的答案)。如果您的问题超出了您最初的要求,也许还可以更新它以明确您想知道什么?
  • 我认为最好看一些代码。我已经更新了我的问题并提供了一些代码。你能指出它有什么问题吗?
猜你喜欢
  • 2020-05-14
  • 2013-03-10
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 2015-09-15
  • 2013-02-12
相关资源
最近更新 更多