Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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-annotationjms-typestringmessage-propertiescontent-typestr8 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 propertiesAll

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 strings1-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)

...