第8章 相互運用性

本章では、AMQ Ruby を他の AMQ コンポーネントと組み合わせて使用する方法を説明します。AMQ コンポーネントの互換性の概要は、「製品の概要」を参照してください。

8.1. 他の AMQP クライアントとの相互運用

AMQP メッセージは AMQP タイプシステムを使用して構成されます。この一般的な形式を使用するのは、異なる言語の AMQP クライアントが、相互運用できることが理由です。

メッセージを送信する場合、AMQ Ruby は自動的に言語ネイティブの型を AMQP エンコードデータに変換します。メッセージの受信時に、リバース変換が行われます。

注記

AMQP のタイプに関する詳細は、Apache Qpid プロジェクトによって維持される インタラクティブタイプリファレンスを参照してください。

表8.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 ビット整数

float

32 ビット浮動小数点数

double

64 ビット浮動小数点数

array

単一タイプの値シーケンス

list

変数タイプの値シーケンス

map

異なるキーから値へのマッピング

uuid

ユニバーサル一意識別子

symbol

制限されたドメインからの 7 ビットの ASCII 文字列

timestamp

絶対ポイント (時間単位)

表8.2 エンコード前およびデコード後における AMQ Ruby タイプ

AMQP 型エンコード前の AMQ Ruby タイプデコード後の AMQ Ruby タイプ

null

nil

nil

boolean

true, false

true, false

char

-

String

string

String

String

binary

-

String

byte

-

Integer

short

-

Integer

int

-

Integer

long

Integer

Integer

ubyte

-

Integer

ushort

-

Integer

uint

-

Integer

ulong

-

Integer

float

-

Float

double

Float

Float

array

-

Array

list

Array

Array

map

Hash

Hash

symbol

Symbol

Symbol

timestamp

Date, Time

Time

表8.3 AMQ Ruby およびその他の AMQ クライアントタイプ (1/2)

エンコード前の AMQ Ruby タイプAMQ C++ タイプAMQ JavaScript タイプ

nil

nullptr

null

true, false

bool

boolean

String

std::string

string

Integer

int64_t

number

Float

double

number

Array

std::vector

Array

Hash

std::map

object

Symbol

proton::symbol

string

Date, Time

proton::timestamp

number

表8.4 AMQ Ruby およびその他の AMQ クライアントタイプ (2/2)

エンコード前の AMQ Ruby タイプAMQ .NET タイプAMQ Python のタイプ

nil

null

None

true, false

System.Boolean

bool

String

System.String

unicode

Integer

System.Int64

long

Float

System.Double

float

Array

Amqp.List

list

Hash

Amqp.Map

dict

Symbol

Amqp.Symbol

str

Date, Time

System.DateTime

long