下图描绘了 JMS 消息结构:
头
每条 JMS 消息中都必须存在头,它是自动指定的。头中的大多数值由 JMS 提供程序在消息被放至 JMS 目标时设置。某些值可以由 JMS 客户机在创建 JMS 会话或创建消息使用者或生产者时声明;例如,当 JMS 客户机创建 JMS 会话或创建消息使用者或生产者时,将创建 JMSDeliveryMode、JMSExpiration、JMSReplyTo 和 JMSCorrelationID。
每个头的数据元素都由“名称 - 值”对组成,它们可以是以下 Java 类型中的任何一种:Boolean、byte、short、char、long、int、float、double、string 或 byte[ ]。
属性
属性是可选的,可以分为以下各子部分:
Java 应用程序可以指定应用程序相关的属性,这些属性在传递消息之前设置。应用程序的属性名只对发送应用程序和接收应用程序有意义。
每个 JMS 提供程序都可以定义专有属性,这些属性既可以由客户机设置,也可以由提供程序自动设置。提供程序相关的属性带有 JMS_ 前缀,后跟供应商名称和特定的属性名。例如,WebSphere MQ JMS 客户机将提供程序属性设置为 JMS_IBM_MsgType。
这些属性由 JMS 提供程序在发送消息时设置。JMS 提供程序供应商可以选择不支持任何标准属性、支持某些标准属性或支持所有标准属性。标准属性名以 JMSX 开头;例如 JMSXUserid 或 JMSXDeliveryCount。
属性作为“名称 - 值”对处理,它们可以是以下 Java 类型中的任何一种:Boolean、byte、short、char、long、int、float、double、string 或 byte[ ]。
有效内容
有效内容类型定义 JMS 消息。它可以是在 JMS 消息类型中描述的六种 JMS 消息类型中的一种。
JMS 不定义有线格式。Java 消息服务规范 V1.1 描述了如何构造消息的物理表示。