java - C/C++ 中的 MQ JMS 主题等价物

标签 java c++ c ibm-mq

我对使用 TOPICS 的 MQ 没有清楚的了解,我在 IBM 文档中进行了搜索,但找不到使用 C++ 订阅主题的方法。在 Java 中,我看到您可以转到 Websphere 控制面板并在那里进行配置。如何以编程方式在 C++ 中执行此操作? 在 C++ 中,我使用函数 MQCONN、MQOPEN 连接到队列并使用 MQGET 和 MQPUT 获取消息,但我认为我只连接到队列而不是 TOPICS。 如果连接到主题与连接到队列不同,我也想弄清楚我是否有正确的想法。提前谢谢大家。

最佳答案

建议在使用 C++ 编程时使用 C MQ API,因为 C++ 类是稳定的并且没有(也不会)根据主题类进行更新,根据 IBM Knowledge Center: Developing C++ applications

IBM WebSphere® MQ Version 7.0, enhancements to the IBM MQ programming interfaces are not applied to the C++ classes.

为了使用 C MQ API 中的主题,这里有一个快速的伪代码示例。另请查看 IBM 提供的示例,例如 amqspuba.camqssuba.c

发布主题

MQOD mqod  {MQOD_DEFAULT};
MQCONN...
mqod.ObjectType = MQOT_TOPIC;
mqod.Version    = MQOD_VERSION_4; /* To use ObjectString field */
mqod.ObjectString.VSPtr = argv[1];
mqod.ObjectString.VSLength = MQVS_NULL_TERMINATED;
MQOPEN(hConn,
       &mqod,
       MQOO_OUTPUT,
       &hObj,
       &CompCode, &Reason);
MQPUT....

订阅主题

MQSD mqsd  {MQSD_DEFAULT};
MQCONN...
mqsd.Options = MQSO_CREATE | MQSO_NON_DURABLE | MQSO_MANAGED;
mqsd.ObjectString.VSPtr = argv[1];
mqsd.ObjectString.VSLength = MQVS_NULL_TERMINATED;
MQSUB(hConn,
      &mqsd,
      &hObj,
      &hSub,
      &CompCode, &Reason);
MQGET from hObj...

关于java - C/C++ 中的 MQ JMS 主题等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101776/

相关文章:

java - 不同类型的for循环结构

C++ 最大数字类型

c - int i :3 in variable assignment? 是什么意思

c++ - 逐步显示点云

c - strlen 与零长度字符串不一致

c - 如何使用 C 创建 TLV 编码/解码消息数据?

java - ClientProtocolException - Android - php

java - 如果我们不知道容器类型中元素的类型,如何实现迭代器?

java - (Java) 将元素从字符串数组追加到字符串变量直到特定索引?

c++ - Docker 远程 API JSON 架构定义