JMS 定义六种消息接口类型:一种基本消息类型和五种子类型。消息类型是根据消息有效内容的类型定义的,其中有效内容是保存内容的消息体。JMS 只指定接口,不指定实施。这在使用公共接口时允许使用特定于供应商的消息实施和传输。
消息类型 | 描述 |
Message | 基类。此消息类型用于事件通知,没有有效内容。 |
BytesMessage | 有效内容作为字节数组存储。此消息类型对于交换应用程序的本机格式的数据,以及当 JMS 用作两个系统之间的传输方式时很有用,其中 JMS 客户机不知道消息有效内容类型。 |
TextMessage | 数据作为字符串存储。此消息类型对交换简单文本消息和更复杂的字符数据(如 XML 文档)很有用。 |
StreamMessage | 流消息是一系列原始 Java 类型。消息对象留意流内这些原始变量的顺序和类型。正式的转换规则是适用的;例如,当 JMS 应用程序尝试将双精度型值作为短整型值读取时,将抛出异常。请参阅 Java 消息服务规范 V1.1,获取转换规则的完整列表。 21ABCDEFGH32.345 是 StreamMessage 有效内容的一个示例。它包含以下三个字段:
如果数据结构是未知的,则可以使用通用方法 readObject() 来返回流中的下一个对象。如果数据结构是已知的,则 JMS 客户机可以明确针对正在访问对象的类型。 |
MapMessage | MapMessage 的有效内容作为一组“名称 - 值”对存储。名称被定义为一个字符串,值是输入的。MapMessage 对于传递可以从一条消息更改至下一条消息的键控数据很有用。 NumberOfCopies:5 是 MapMessage 有效内容的一个示例,其中 NumberOfCopies 是关键字,5 是值。 可以通过使用 getMapNames() 访问数据,该方法返回一个 Java 枚举对象。可以使用 hasMoreElements() 在 MapMessage 中进行迭代来检索映射的“名称 - 值”对。 |
ObjectMessage | 对象消息携带可序列化的 Java 对象作为它的有效内容。它对交换 Java 对象很有用。 |