...
Qpid Broker-J supports message conversion from one protocol into another. For example, when message is published with AMQP 0-9-1 and consumed using AMQP 1.0, the Broker takes care about converting the message from AMQP 0-9-1 format into AMQP 1.0. This page provides a summary of how conversion from one protocol into another works.
...
Various types can be used to set values of message properties and values in Map, List messages, etc. The matrices below show how the types are converted. The red colour is used to highlight the types where conversion is unsupported yet. The orange/yellow colours are used to highlight the types for which conversion is implemented but the target type does not correspond to the original one even when protocol supports such type. The green colour is used to highlight the types where conversion is implemented into correct corresponding type on another protocol.
X - used to indicate the corresponding type to convert to
? - used to indicate the type which is currently used to convert
...
AMQP 1-0 message | AMQP 0-10 message | Implemented
| |||||
---|---|---|---|---|---|---|---|
Section name | Property name | Type | Property segment | Property name | type | Comments | |
header | durable | boolean | delivery-properties | delivery-mode | uint8 |
| Y |
header | priority | unsigned byte | delivery-properties | priority | uint8 |
| Y |
header | ttl /absolute-expiry-time | milliseconds/ulong | delivery-properties | ttl | uint64 |
| Y |
properties | content-type | symbol | message-properties | content-type | str8 |
| Y |
properties | content-encoding | symbol | message-properties | content-encoding | str8 |
| Y |
properties | message-id | binary | message-properties | message-id | uuid |
| Y |
properties | correlation-id | binary | message-properties | correlation-id | vbin16 |
| Y |
properties | user-id | binary | message-properties | user-id | vbin16 |
| Y |
properties | reply-to | string | message-properties | reply-to | reply-to |
| Y |
properties | creation-time | timestamp /ulong | delivery-properties | timestamp | datetime |
| N |
properties | subject | string | message-properies | headers['qpid.subject'] and routing-key | str8 |
| N |
properties | group-id | string | message-properies | headers['JMSXGroupID'] | str8 |
| N |
properties | group-sequence | sequence number | message properies | headers['JMSXGroupSeq' | str8 |
| N |
properties | to | string | delivery-properties | exchange | str8 |
| N |
properties | to | string | delivery-properties | routing-key | str8 |
| N |
application-properties | - | map | message-properties | application-headers | map |
| Y |
content | delivery-properties | content-length |
|
| Y | ||
message-annotation | jms-type | string | message-properties | content-type | str8 | N |
...
Content conversion
Conversion of message content from AMQP 0-8...0-9-1 into AMQP 0-10 and back is simply a matter of copying the content bytes.
...
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, etc) | All |
Missing conversion of message properties | All |
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 |
Handling of conversion
...
errors
The converter modules should employ the following strategies when message cannot be converted into target protocol format (for example, due to unsupported types, values, etc)
...