【发布时间】:2018-07-08 18:07:12
【问题描述】:
我有以下问题(简化):
两个队列管理器 - QM1 和 QM2 - 形成一个集群。
QMgr QM1
- 别名队列 Q1 和基本队列 Q1.L,这是一个本地集群队列(即在 QM1 上定义)
- 别名队列 Q2 和基本队列 Q2.L,它是一个非本地集群队列(即在 QM2 上定义)
QMgr QM2
- 本地集群队列 Q2.L
我可以打开别名队列进行查询,请求 MQCA_BASE_Q_NAME 并在这两种情况下都获得基本队列。
我需要以编程方式确定此基本队列是本地集群队列还是远程(非本地)集群队列。我们正在使用 C API (MQI)。
我打开基本队列进行查询,并根据此文档:
http://www-01.ibm.com/support/knowledgecenter/#!/SSFKSJ_7.5.0/com.ibm.mq.ref.dev.doc/q101840_.htm (参见使用说明 - 4。)
我只能请求以下属性: - MQCA_Q_DESC、MQCA_Q_NAME、MQIA_DEF_BIND、MQIA_DEF_PERSISTENCE、MQIA_DEF_PRIORITY、MQIA_INHIBIT_PUT、MQIA_Q_TYPE
这可行,但 MQIA_Q_TYPE 返回集群队列 MQQT_CLUSTER (7)。这很好 - 我知道我处理了一个集群队列,但还不够 - 本地还是非本地?
检查 cmqc.h 标头,我可以看到一些其他有趣的属性选择器,不幸的是无法正常工作。 例如:MQIA_CLUSTER_Q_TYPE,但是在传入选择器向量进行查询时,取回 CompCode:2, Reason:2067 - 属性选择器无效。
在 PCF 文档中这似乎是可能的:
http://www-01.ibm.com/support/knowledgecenter/#!/SSFKSJ_7.5.0/com.ibm.mq.ref.adm.doc/q087800_.htm (表1,列Cluster queue)
这是 C API 的一些限制吗?有什么解决方法吗?
干杯,米罗
【问题讨论】: