Sun Java System Message Queue 3.7 UR1 技术概述

消息头

消息头是每条 JMS 消息所必需的。消息头包含十个预定义字段,表 2–3 中列出并介绍了这些字段。

表 2–3 JMS 定义的消息头

头字段 

描述 

JMSDestination

指定消息要发送到的目的地对象的名称。(由提供者设置。)

JMSDeliveryMode

指定消息是否为持久性消息。(默认情况下由提供者设置,也可以由客户端为生成方或为单独的消息显式设置。)

JMSExpiration

指定消息的到期时间。(默认情况下由提供者设置,也可以由客户端为生成方或为单独的消息设置。)

JMSPriority

在 0(低)到 9(高)的范围内指定消息的优先级。(默认情况下由提供者设置,也可以由客户端为生成方或为单独的消息显式设置。)

JMSMessageID

指定消息在提供者安装的上下文中的唯一 ID。(由提供者设置。)

JMSTimestamp

指定提供者接收消息的时间。(由提供者设置。)

JMSCorrelationID

客户端用于定义两条消息之间的对应性的值。(由客户端在需要时设置。)

JMSReplyTo

指定使用方应发送回复的目的地。(由客户端在需要时设置。)

JMSType

可由消息选择器评估的值。(由客户端在需要时设置。)

JMSRedelivered

指定消息是否已传送但尚未得到确认。(由提供者设置。)

从表中可以看出,消息头字段有多种用途:标识消息、配置消息的路由以及提供有关消息处理的信息等。

其中最重要的字段之一 JMSDeliveryMode,用于决定消息传送的可靠性。该字段指示一条消息是否为持久性消息。

部分消息头字段由提供者(代理或客户端运行时环境)设置,其他头字段则由客户端设置。消息生成方可能需要配置头字段值,才能实现某些消息传送行为;消息使用方可能需要读取头字段值,才能了解消息的路由方式以及可能需要对它执行哪些进一步处理。

头字段(JMSDeliveryMode、JMSExpirationJMSPriority)可以在三个不同的级别上进行设置:

如果这些字段在多于一个级别上进行设置,则为连接工厂设置的值将覆盖为单条消息设置的值;为给定消息设置的值将覆盖为消息生成方设置的值。

消息头字段的固定名称因语言实现而异。有关详细信息,请参见《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients》《Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients》