搜索

第 11 章 互操作性

download PDF

本章讨论如何与其他 AMQ 组件结合使用 AMQ JMS。有关 AMQ 组件兼容性的概述,请参阅 产品简介

11.1. 与其他 AMQP 客户端互操作

AMQP 消息 通过 AMQP 类型系统来 构成。采用这种通用格式是不同语言的 AMQP 客户端能够相互互操作的原因之一。本节旨在记录与所使用的各种 JMS 消息类型相关的客户端发送和接收的 AMQP 载荷,以帮助与其他 AMQP 客户端一起使用。

11.1.1. 发送消息

本节旨在记录客户端在使用各种 JMS 消息类型时发送的不同有效负载,以帮助使用其他客户端接收它们。

11.1.1.1. 消息类型

JMS 消息类型传输的 AMQP 消息的描述

TextMessage

文本将以 amqp-value body 部分发送,其中包含正文文本的 utf8 编码 字符串,如果没有设置正文文本,则为 null。带有 符号 键 "x-opt-jms-msg-type" 的消息注释将设置为 字节 值 5。

BytesMessage

BytesMessage 将使用包含 BytesMessage 正文原始字节 的数据 正文部分发送 BytesMessage,并将 properties 部分 content-type 字段设置为 符号"application/octet-stream"。带有 符号 键 "x-opt-jms-msg-type" 的消息注释将设置为 字节 值 3。

MapMessage

MapMessage 正文将使用包含单个 映射 值的 amqp-value body 部分发送。MapMessage 正文中的任何字节[] 值将编码为映射中 的二进制 条目。带有 符号 键 "x-opt-jms-msg-type" 的消息注释将设置为 字节 值 2。

StreamMessage

StreamMessage 将使用包含 StreamMessage 正文中的条目的 amqp-sequence 正文部分发送 StreamMessage。StreamMessage 正文中的任何字节[] 条目将编码为序列中 的二进制 条目。带有 符号 键 "x-opt-jms-msg-type" 的消息注释将设置为 字节 值 4。

ObjectMessage

ObjectMessage 将使用 数据 正文部分发送,其中包含使用 ObjectOutputStream 序列化 ObjectMessage 正文的字节,并将 properties 部分 content-type 字段设置为 符号"application/x-java-serialized-object"。带有 符号 键 "x-opt-jms-msg-type" 的消息注释将设置为 字节 值 1。

消息

普通 JMS Message 没有正文,并将作为包含 nullamqp-value body 部分发送。带有 符号 键 "x-opt-jms-msg-type" 的消息注释将设置为 字节 值 0。

11.1.1.2. 消息属性

JMS 消息支持设置各种 Java 类型的应用属性。本节介绍这些属性类型到发送消息的 application-properties 部分中的 AMQP 类型值的映射。JMS 和 AMQP 将字符串键用于属性名称。

JMS 属性类型AMQP 应用程序属性类型

布尔值

布尔值

字节

byte

short

int

int

long

long

浮点值

浮点值

double

字符串

字符串null

11.1.2. 接收消息

此部分用于记录客户端收到的不同载荷将映射到各种 JMS Message 类型,以帮助使用其他客户端发送消息,供 JMS 客户端接收。

11.1.2.1. 消息类型

如果收到的 AMQP 消息中存在 "x-opt-jms-msg-type" message-annotation,则其值将用于确定用于表示它的 JMS 消息类型,具体取决于下表中详述的映射。这反映了 关于 JMS 客户端发送的消息所讨论消息的映射的 反向流程。

AMQP "x-opt-jms-msg-type" message-annotation 值(类型)JMS 消息类型

0(字节)

消息

1(字节)

ObjectMessage

2(字节)

MapMessage

3(字节)

BytesMessage

4(字节)

StreamMessage

5(字节)

TextMessage

如果 "x-opt-jms-msg-type" message-annotation 不存在,则下表详细说明消息将如何映射到 JMS Message 类型。请注意,St reamMessageMapMessage 类型仅分配给注解的消息。

接收 AMQP 消息的描述,但没有 "x-opt-jms-msg-type" 注解JMS 消息类型
  • 包含 字符串nullamqp-value body 部分。
  • 数据 正文部分,属性 部分内容类型 字段设置为表示常见文本介质类型的 符号 值,如 "text/plain"、" application/xml""application/json"。

TextMessage

  • 包含 二进制amqp-value body 部分。
  • 数据 正文部分,其 properties 部分 content-type 字段未设置,设置为 符号"application/octet-stream",或设置为不理解与另一消息类型关联的任何值。

BytesMessage

  • 数据 正文部分,其 properties 部分 content-type 字段设置为 符号"application/x-java-serialized-object"。
  • 包含以上未涵盖的值的 amqp-value body 部分。
  • amqp-sequence 正文部分.这将作为对象邮件内的列表来表示。

ObjectMessage

11.1.2.2. 消息属性

本节介绍收到的 AMQP 消息的 application-properties 部分中的值映射到 JMS 消息中使用的 Java 类型。

AMQP 应用程序属性类型JMS 属性类型

布尔值

布尔值

byte

字节

short

int

int

long

long

浮点值

浮点值

double

字符串

字符串

null

字符串

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.