消息组
消息可以出现在组内以对消息排序。
消息组允许将多条消息标记为彼此相关,并将逻辑顺序应用于组(请参阅逻辑和物理顺序)。 在多平台,信息分割可以将较大的消息分解成较小的段。 将消息放入主题时不能使用分组或分段消息。
组内的层次结构如下所示:
- 组
- 这是层次结构的最高级别,由
GroupId标识。 它由一个或多个包含相同GroupId的消息组成。 这些消息可以存储在队列的任意位置。注: 此处使用术语 message 来表示队列上的一项,例如,将由未指定 MQGMO_COMPLETE_MSG 的单个 MQGET 返回。 - 逻辑消息
- 由
GroupId和MsgSeqNumber字段标识的组内的逻辑消息。 对于组中的第一条消息,MsgSeqNumber以 1 开头,如果消息不在组中,则该字段的值为 1。使用组中的逻辑消息执行下列操作:- 确保排序(如果传输消息时没有保证排序)。
- 允许应用程序对类似消息进行分组(例如,必须全部由同一服务器实例处理的消息)。
组中的每条消息由一个物理消息组成,除非该消息分为多个分段。 每条消息在逻辑上是单独的消息,只有 MQMD 中的
GroupId和MsgSeqNumber字段需要拥有与组中其他消息的关系。 MQMD 中的其他字段是独立的;其中某些字段可能对于组中的所有消息都相同,但其他字段可能不同。 例如,组中的消息可以有不同的格式名称、CCSID 和编码。 - 段
- 分段用于为输入或获取应用程序或者队列管理器(包括借助其传递消息的中间队列管理器)处理过大的消息。 有关详细信息,请参阅For more information, see消息分段。
单个消息拆分为名为分段的较小的消息。 消息段由
GroupId、MsgSeqNumber和Offset字段标识。 对于消息中的第一个分段,Offset字段以 0 开头。每个段都由一条可能属于一个组的物理消息组成 ( 图 2 显示了一个组中的消息示例)。 分段在逻辑上是单个消息的一部分,因此只有 MQMD 中的
MsgId、Offset和MsgFlags字段可以区分同一消息的两个独立分段。 如果段未能到达,那么将相应地返回原因码 MQRC_INCOMPLETE_GROUP 或 MQRC_INCOMPLETE_MSG 。图 2 显示了一组逻辑消息,其中一些消息已分段:图 2。 分段消息 
不支持分段IBM MQ for z/OS。
不能为发布/预订使用分段或组合消息。
