...
AMQP 0-10 type
| Used in JMS Clients | AMQP 0-9-1 types | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
short-string | long-string | timestamp | field-array | field-table | float | double | decimal | void | boolean | byte | unsigned byte | short | unsigned short | int | unsigned int | long | unsigned long | binary | ascii str | wide str | ascii char | |||
bin8 | no |
|
|
|
|
|
|
|
|
|
|
|
| ? |
|
|
|
|
| X |
|
|
| |
int8 | yes |
|
|
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
|
|
|
|
| |
uint8 | no |
|
|
|
|
|
|
|
|
|
|
| X | ? |
|
|
|
|
|
|
|
|
| |
char | no ****** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X | |
boolean | yes |
|
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
|
|
|
|
|
| |
bin16 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
| ? |
|
|
| X |
|
|
| |
int16 | yes |
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
|
|
| |
uint16 | no |
|
|
|
|
|
|
|
|
|
|
|
|
| X | ? |
|
|
|
|
|
|
| |
bin32 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ? |
| X |
|
|
| |
int32 | yes |
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
| |
uint32 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X | ? |
|
|
|
|
| |
float | yes |
|
|
|
|
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
char-utf32 | no |
| X*** |
|
|
|
|
|
|
|
|
|
|
|
| ? |
|
|
|
|
|
| | |
sequence-no | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
bin64 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ? |
| X |
|
|
| |
int64 | yes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
|
|
| |
uint64 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ? | X |
|
|
|
| |
double | yes |
|
|
|
|
|
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
datetime | no |
|
| X |
|
|
|
|
|
|
|
|
|
|
|
|
| ? |
|
|
|
|
| |
bin128 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
uuid ** | no ****** |
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
|
bin256 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
bin512 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
bin1024 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
bin40 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
dec32 | no |
|
|
|
|
|
|
| X |
|
|
|
|
|
|
|
|
|
| ? |
|
|
| |
bin72 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
dec64 | no |
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
void | yes |
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
|
|
|
|
|
|
| |
bit | no |
|
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
|
| ? |
|
|
| |
vbin8 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
str8-latin | no | X | ? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
str8 | no |
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
str8-utf16 | no |
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vbin16 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
str16-latin | no |
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
str16 | no |
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
str16-utf16 | yes |
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
byte-ranges | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
sequence-se | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
vbin32 | yes **** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
| |
map | no ***** |
|
|
|
| X* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
list | no ***** |
|
|
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
array | no |
|
|
| X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
struct32 | no |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X |
|
|
|
...
** UUID type is unsupported by AMQP 0-8/0-9.x. An exception is thrown on attempt to convert. Should it be converted into short string?It is converted to a long string
*** there is no corresponding type in AMQP 0-8..0-9.x. Thus, the most appropriate type for conversion UTF32 char is long-string.
...
****** Instances of java.util.UUID and java.lang.Character can be specified as part of ListMessage. They are encoded into AMQP 0-10 types "uuiuuid" and "char" (one byte) accordingly.
...
AMQP 1.0 Message | Internal Message | |||||
---|---|---|---|---|---|---|
body section | body data type | annotation x-opt-jms-msg-type | content-type | body object | content type | comments |
amqp-value | null | any | any | null | see comment | this case is treated identical to the case where there is no body section (see below) |
string | any | content types listed as "common textual media types" in section 3.3.7 (Body Sections) of AMQP JMS Mapping specification (WD9) | String | copied verbatim | ||
other | String | "text/plain" | ||||
map | any | any | Map<Object,Object> | null | ||
list | any | any | List<Object> | null | ||
other | any | any | Object | copied verbatim | ||
amqp-sequence | any | any | any | List<Object> | null | |
data | binary (byte[]) | 0 (Message) | any | byte[] | copied verbatim or "application/octet-stream" if null | |
1 (ObjectMessage) | any | byte[] | copied verbatim or "application/x-java-serialized-object" if null | |||
2 (MapMessage) | any | byte[] | copied verbatim or "application/octet-stream" if null | |||
3 (BytesMessage) | any | byte[] | copied verbatim or "application/octet-stream" if null | |||
4 (StreamMessage) | any | byte[] | copied verbatim or "application/octet-stream" if null | |||
5 (TextMessage) | any | byte[] | copied verbatim or "application/octet-stream" if null | |||
other or not set | any | byte[] | copied verbatim or "application/octet-stream" if null | |||
no body | N/A | 0 (Message) | any | null | null | |
1 (ObjectMessage) | any | null | application/x-java-serialized-object | |||
2 (MapMessage) | any | null | null | |||
3 (BytesMessage) | any | null | application/octet-stream | |||
4 (StreamMessage) | any | null | null | |||
5 (TextMessage) | content types listed as "common textual media types" in section 3.3.7 (Body Sections) of AMQP JMS Mapping specification (WD9) | null | copied verbatim | |||
other | null | text/plain | ||||
other or null | any | null | copy verbatim |
Conversion issues
This section summarises existing conversion issues
...
Issue description
...
Protocols
...
AMQP 0-8...0-9-1 to AMQP 0-10 and vice versa
No conversion is necessary. Content and contentType are simply copied.
AMQP 0-x to Internal
AMQP 0-x | Internal Message | comments | |
---|---|---|---|
content type | body object | content-type | |
content types listed as "common textual media types" in section 3.3.7 (Body Sections) of AMQP JMS Mapping specification (WD9) | String | copied verbatim | if body is empty the body object is null. |
jms/map-message | Map | null | if body is empty, the body object will contain an empty map |
amqp/map | Map | null | if body is empty, the body object will contain an empty map |
jms/stream-message | List | null | if body is empty, the body object will contain an empty list |
amqp/list | List | null | if body is empty, the body object will contain an empty list |
application/java-object-stream | byte[] | application/x-java-serialized-object | if body is empty, the body object will contain an empty byte array |
application/x-java-serialized-object | byte[] | application/x-java-serialized-object | if body is empty, the body object will contain an empty byte array |
application/octet-stream | byte[] | application/octet-stream | if body is empty, the body object will contain an empty byte array |
other with body | byte[] | copied verbatim | |
none with body | byte[] | null | |
other without body | null | copied verbatim | |
none without body | null | null |
Conversion issues
This section summarises existing conversion issues
Issue description | Protocols |
---|---|
Missing Type conversion (decimal, uuid (0-10 --> 0-8...0-9-1)) | All |
Inaccurate Type conversion (unsigned types are converted into types (all), timestamps are converted into long (all), utf chars are converted into ascii chars, binary types are converted into signed (0-10)) | All |
Unsupported property key or value (uuid is unsupported in 0-8...0-9-1, decimal is unsupported in 0-10, | All |
Inaccurate Type conversion (unsigned types are converted into types (all), timestamps are converted into long (all), utf chars are converted into ascii chars, binary types are converted into signed (0-10)) | All |
Unsupported property key or value (uuid is unsupported in 0-8...0-9-1, decimal is unsupported in 0-10, etc) | All |
Missing conversion of message properties | All |
0-10 requires uuid type for message-id. As result, a conversion of non-0-10 message-id which is not UUID can not be done. This should not prevent the conversion of entire message. | non-0-10 --> 0-10 |
Conversion of application properties from AMQP 1-0 into AMQP 0-x headers (0-8...0-9-1 FieldTable and 0-10 map) when application properties length exceeds 255 character ( or contains non-ascii characters or start with illegal characters) | 1-0 --> 0-x |
Conversion of AMQP 0.x headers (represented as 0-8...0-9-1 FieldTable or 0-10 map) into AMQP 1-0 application properties when headers values are not primitives (for example, maps, collections, etc) | 0-x --> 1-0 |
Conversion of Map content from AMQP 1-0 into AMQP 0-x Map Message when keys are not strings | 1-0 --> 0-x |
JMS message type is changed when converted from AMQP 0.x into AMQP 1.0 (jms-type annotation is not set) | 0-x --> 1-0 |
JMS message type is changed when converted from AMQP 1-0 into AMQP 0.x (jms-type annotation is not respected) | 1-0 --> 0-x |
...
none | null | amqp-value | null | 0 (Message) | copied verbatim |
empty body |
application/java-object-stream | byte[] |