开发 C++ 应用程序

IBM® MQ 提供了相当于 IBM MQ 对象的 C++ 类以及相当于数组数据类型的一些其他类。 它提供许多不能通过 MQI 使用的功能。

IBM WebSphere® MQ 7.0IBM MQ 编程接口的增强功能不会应用于 C++ 类。

IBM MQ C++ 提供了以下功能:
  • 自动初始化 IBM MQ 数据结构。
  • 及时的队列管理器连接和队列开启。
  • 隐式队列关闭和队列管理器断开连接。
  • 死信消息头传输和接收。
  • IMS 网桥头传输和接收。
  • 参考消息头传输和接收。
  • 触发器消息接收。
  • CICS® bridge 头传输和接收。
  • 工作头传输和接收。
  • 客户机通道定义。

以下 Booch 类图显示了所有类与过程 MQI (例如使用 C) 中具有句柄或数据结构的那些 IBM MQ 实体大致平行。 所有类都继承自 ImqError 类 (请参阅 ImqError C++ 类 ) ,这允许将错误条件与每个对象相关联。

图 1。 IBM MQ C++ 类 (项处理)
显示 IBM MQ C++ 项处理类的 Booch 类图。 CICSBridgeHeader, DeadLetterHeader, IMSBridgeHeader, ReferenceHeader, 和 WorkHeader 类继承自抽象Header类。 头和触发器类继承自与 Message 类协作的抽象 Item 类。
图 2。 IBM MQ C++ 类 (队列管理)
显示 IBM MQ C++ 队列管理类的 Booch 类图。 Queue、QueueManager 和 Namelist 类从抽象 Object 类继承而来。 QueueManager 可管理 1 到 n 个 Object,而它反过来又由 Channel 类引用。 Queue 与 Message、GetMessageOptions 和 PutMessageOptions 类协作。 Queue 和 Message 都从 MessageTracker 继承而来,Message 也从 Cache 类继承而来。 DistributionList 类从 Queue 继承, 1 到 n 队列由它引用。
要正确解释 Booch 类图,请注意以下约定:
  • 方法和需要注意的属性显示在名称之下。
  • 云内的小三角形表示抽象类
  • 继承由指向父类的箭头来表示。
  • 云之间未加装饰的线表示类之间的协作关系
  • 使用数字装饰的线表示两个类之间的引用关系。 数字表示在任何一个时刻可以参与特定关系的对象数量。
在队列管理类的 C++ 方法特征符中使用以下类和数据类型 (请参阅 图 2 ) 和项处理类 (请参阅 图 1 ):
  • ImqBinary 类 (请参阅 ImqBinary C++ 类 ) ,用于封装字节数组,例如 MQBYTE24。
  • ImqBoolean 数据类型,定义为 typedef unsigned char ImqBoolean
  • ImqString 类 (请参阅 ImqString C++ 类 ) ,它封装了诸如 MQCHAR64之类的字符数组。

具有数据结构的实体包含在适当的对象类中。 个别数据结构字段 (请参阅 C++ 和 MQI 交叉引用 ) 使用方法进行访问。

具有句柄的实体位于 ImqObject 类层次结构下 (请参阅 ImqObject C++ 类 ) 并提供 MQI 的封装接口。 这些类的对象显示智能行为,可以减少相对于过程 MQI 所需的方法调用数量。 例如,您可以根据需要建立和丢弃队列管理器连接,也可以使用适当的选项打开队列,然后再将其关闭。

ImqMessage 类(请参阅 ImqMessage C++ 类 )封装了 MQMD 数据结构,并通过提供缓存缓冲设施,充当用户数据和项目的存放点(请参阅 C++ 中的读取消息 )。 您可以为用户数据提供固定长度的缓冲区,并多次使用缓冲区。 存在于缓冲区中的数据量会随着使用而变化。 或者,系统可以提供和管理灵活长度的缓冲区。 缓冲区的大小(可用于接收消息的量)和实际使用量(传输的字节数或实际接收的字节数)都是重要的考虑因素。