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

MQ JMS Topic Equivalent in C/C++

我对使用 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 中的主题,这里有一个快速 pseudo-code 示例。另请查看 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...