第 12 章 互操作性


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

12.1. 与其他 AMQP 客户端交互

AMQP 消息使用 AMQP 类型系统 组成。这种通用格式是以不同语言的 AMQP 客户端能够相互互操作的原因之一。

发送消息时,红帽构建的 Rhea 会自动将语言原生类型转换为 AMQP 编码的数据。收到信息时,反向转换就发生。

注意

有关 AMQP 类型的更多信息,请访问由 Apache Qpid 项目维护 的交互式类型参考

表 12.1. AMQP 类型
AMQP 类型描述

null

一个空值

boolean

true 或 false 值

char

单个 Unicode 字符

string

一系列 Unicode 字符

binary

一个字节序列

byte

签名的 8 位整数

short

签名的 16 位整数

int

签名的 32 位整数

long

签名的 64 位整数

ubyte

未签名的 8 位整数

ushort

未签名的 16 位整数

uint

未签名的 32 位整数

ulong

未签名的 64 位整数

浮点值

32 位浮点号

double

64 位浮点号

数组

单个类型的值的序列

list

变量类型的序列值

map

从不同键到值的映射

uuid

通用唯一标识符

symbol

来自受限域的 7 位 ASCII 字符串

timestamp

一个绝对时间点

JavaScript 具有比 AMQP 可以编码的原生类型。要发送包含特定 AMQP 类型的消息,请使用 rhea/types.js 模块中的 wrap_ 功能。

表 12.2. RHEA 类型编码前和解码后
AMQP 类型RHEA 在编码前类型解码后 RHEA 类型

null

null

null

布尔值

布尔值

布尔值

char

wrap_char (number)

number

string

string

string

二进制

wrap_binary (string)

string

byte

wrap_byte(number)

number

short

wrap_short(number)

number

int

wrap_int (number)

number

long

wrap_long (number)

number

ubyte

wrap_ubyte(number)

number

ushort

wrap_ushort(number)

number

uint

wrap_uint(number)

number

ulong

wrap_ulong(number)

number

浮点值

wrap_float (number)

number

double

wrap_double(number)

number

数组

wrap_array (Array, code)

Array

list

wrap_list (Array)

Array

map

wrap_map(object)

object

uuid

wrap_uuid(number)

number

symbol

wrap_symbol(string)

string

timestamp

wrap_timestamp(number)

number

表 12.3. RHEA 和其他 AMQ 客户端类型(2 为 1)
RHEA 在编码前类型AMQ C++ 类型红帽构建的 Apache Qpid Proton DotNet 类型

null

nullptr

null

布尔值

bool

System.Boolean

wrap_char (number)

wchar_t

System.Char

string

std::string

system.String

wrap_binary (string)

proton::binary

System.Byte[]

wrap_byte(number)

int8_t

system.SByte

wrap_short(number)

int16_t

System.Int16

wrap_int (number)

int32_t

System.Int32

wrap_long (number)

int64_t

System.Int64

wrap_ubyte(number)

uint8_t

System.Byte

wrap_ushort(number)

uint16_t

System.UInt16

wrap_uint(number)

uint32_t

System.UInt32

wrap_ulong(number)

uint64_t

System.UInt64

wrap_float (number)

浮点值

system.Single

wrap_double(number)

double

System.Double

wrap_array (Array, code)

-

-

wrap_list (Array)

std::vector

Amqp.List

wrap_map(object)

std::map

Amqp.Map

wrap_uuid(number)

proton::uuid

system.Guid

wrap_symbol(string)

proton::symbol

Amqp.Symbol

wrap_timestamp(number)

proton::timestamp

System.DateTime

表 12.4. RHEA 和其他 AMQ 客户端类型(2 个)
RHEA 在编码前类型红帽构建的 Apache Qpid Proton Python 类型 

null

None

 

布尔值

bool

 

string

Unicode

 

wrap_char (number)

Unicode

 

wrap_binary (string)

bytes

 

wrap_byte(number)

int

 

wrap_short(number)

int

 

wrap_int (number)

long

 

wrap_long (number)

long

 

wrap_ubyte(number)

long

 

wrap_ushort(number)

long

 

wrap_uint(number)

long

 

wrap_ulong(number)

long

 

wrap_float (number)

浮点值

 

wrap_double(number)

浮点值

 

wrap_array (Array, code)

proton.Array

 

wrap_list (Array)

list

 

wrap_map(object)

dict

 

wrap_uuid(number)

-

 

wrap_symbol(string)

str

 

wrap_timestamp(number)

long

 
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.