gpt4 book ai didi

c - IBM MQ 7.5 使用 C-API 检查本地或非本地集群队列

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:11 25 4
gpt4 key购买 nike

我有以下问题(已简化):

两个队列管理器 - QM1 和 QM2 - 形成一个集群。

QMgr QM1

  • 使用基本队列 Q1.L 为队列 Q1 添加别名,这是一个本地集群队列(即在 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 header ,我可以看到一些其他有趣的属性选择器,不幸的是没有工作。例如:MQIA_CLUSTER_Q_TYPE,但是传入选择器 vector 查询时,返回CompCode:2,原因:2067 - 属性选择器无效。

在 PCF 文档中,这似乎是可能的:

http://www-01.ibm.com/support/knowledgecenter/#!/SSFKSJ_7.5.0/com.ibm.mq.ref.adm.doc/q087800_.htm(表一,列Cluster queue)

这是 C API 的一些限制吗?任何解决方法?

干杯,米罗

最佳答案

我知道您想做什么,但是为什么您想要这样做是一个有趣的问题。我希望您正在从事的工作是检测和监控,而不是应用程序。如果一个业务应用程序需要知道这些信息,那么这个设计几乎肯定是有问题的。异步消息传递的整个想法是将消息的发送者与接收者分离,因此应用程序需要知道或关心目的地是否是本地的。这就是 API 没有解决您的问题的原因 - 为商业应用程序这样做会破坏异步模型。

也就是说,最简单的方法是使用 MQIA_CURRENT_Q_DEPTH 并查询队列深度。如果队列是非本地的,调用将失败。

(删除了之前关于使用 PCF 到 DIS QL 的回答,因为这更简单并且 100% 准确。)

在可供查询的 60 个队列属性中,您为什么认为“只能请求以下属性:- MQCA_Q_DESC、MQCA_Q_NAME、MQIA_DEF_BIND、MQIA_DEF_PERSISTENCE、MQIA_DEF_PRIORITY、MQIA_INHIBIT_PUT、MQIA_Q_TYPE”?这是本地的商店标准吗?

关于c - IBM MQ 7.5 使用 C-API 检查本地或非本地集群队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com