ActiveMQCPP - 识别测量类型



我之前在一些项目中使用过activemqcpp API,但我事先总是知道消息是什么类型,因此动态转换为相应的消息子类是安全的。

现在我正在为 MQ 库构建一个包装器,但找不到一种方法来识别从基本消息指针(由接收返回)中识别它匹配的消息子类以相应地转换它。

如果你想以纯粹C++的方式做事,那么你可以使用C++RTTI中的typeid运算符来检查对象,看看它是什么。

更简单的方法是强制转换为所有 CMS 消息实例派生自的基础消息类型:

activemq::core::commands::Message

此类提供了一个方法getDataStructureType()方法,该方法通过OpenWire协议中使用的分配ID返回类型:

    const unsigned char ID_ACTIVEMQBLOBMESSAGE = 29;
    const unsigned char ID_ACTIVEMQBYTESMESSAGE = 24;
    const unsigned char ID_ACTIVEMQMAPMESSAGE = 25;
    const unsigned char ID_ACTIVEMQMESSAGE = 23;
    const unsigned char ID_ACTIVEMQOBJECTMESSAGE = 26;
    const unsigned char ID_ACTIVEMQSTREAMMESSAGE = 27;
    const unsigned char ID_ACTIVEMQTEXTMESSAGE = 28;

或者,您可以尝试对每种类型进行动态强制转换,直到结果为非 null。

最新更新