...
AMQP 1.0 message | AMQP 0-8...0-9-1 message |
|
|
| Implemented
| ||
---|---|---|---|---|---|---|---|
Section name | Property name | Type | Properties | Property name | Type | Comments | |
header | durable | boolean | message property | delivery mode | unsigned byte |
| Y |
header | priority | unsigned byte | message property | priority | unsigned byte |
| Y |
header | ttl | milliseconds/uint | message property | expiration | short-string | 'absolute-expiry-time' takes precedence over 'ttl' | Y |
properties | absolute-expiry-time | timestamp /ulong | message property | expiration | short-string | 'absolute-expiry-time' takes precedence over 'ttl' | Y |
header | delivery-count | uint |
|
|
|
|
|
header | first-acquirer | boolean |
|
|
|
|
|
message-annotations | x-opt-jms-msg-type | byte | message property | content type | short-string | see table for content conversion below | Y |
header | content-type | symbol | message property | content type | short-string | see table for content conversion below | Y |
properties | content-encoding | symbol | message property | encoding | short-string | MCE is thrown on content-encoding length > 255 | Y |
properties | message-id | binary, uuid, ulong, string | message property | message id | short-string | if conversion to AMQShortString fails the field is not set. when converting from binary no restrictions are applied to the bytes. May contain invalid UTF-8 and/or zero-bytes. | Y |
properties | correlation-id | binary, uuid, ulong, string | message property | correlation id | short-string | if conversion to AMQShortString fails the MCE is thrown. when converting from binary no restrictions are applied to the bytes. May contain invalid UTF-8 and/or zero-bytes. | Y |
properties | user-id | binary | message property | user id | short-string | if conversion to AMQShortString fails the field is not set | Y |
properties | reply-to | string | message property | reply to | short-string | See section "Address Conversion" if conversion to AMQShortString fails the MCE is thrown | Y |
properties | creation-time | timestamp /ulong | message property | timestamp | long | if creation-time is not set arrival time will be used | Y |
properties | subject | string | message property | headers['qpid.subject'] | long-string |
| Y |
properties | subject | string | message property | type | short-string | MCE is thrown on subject length > 255 | Y |
properties | subject | string | publish property | routing-key | short-string | See conversion of 'to' below. | Y |
properties | group-id | string | message property | headers['JMSXGroupID'] | long-string | specified in JMS bindmap | Y |
properties | group-sequence | sequence number | message property | headers['JMSXGroupSeq'] | int | specified in JMS bindmap | Y |
properties | to | string | basic.publish | exchange, routingKey | short string | See section "Address Conversion". If an exchange is specified without routingKey the properties.subject is used as routingKey. Throw MCE if exchange or routingKey conversion to AMQShortString fails | Y |
application-properties | * | * | message property | headers | field-table | If conversion fails a MCE is thrown | Y |
...
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/properties | ttl /absolute-expiry-time | milliseconds/ulong | delivery-properties | ttl | uint64 |
| Y |
header/properties | ttl /absolute-expiry-time | milliseconds/ulong | delivery-properties | expiration | datetime | Y | |
message-annotations | x-opt-jms-msg-type | byte | message-properties | content-type | str8 | see table for content conversion below | Y |
properties | content-type | symbol | message-properties | content-type | str8 | see table for content conversion below | Y |
properties | content-encoding | symbol | message-properties | content-encoding | str8 | Throw MCE if conversion to str8 fails | Y |
properties | message-id | binary, uuid, ulong, string | message-properties | message-id | uuid | When converting from string direct conversion to UUID is attempted. If that fails a type 3 UUID is created. When converting from non-UUID a type 3 UUID is created from the source bytes. | Y |
properties | correlation-id | binary, uuid, ulong, string | message-properties | correlation-id | vbin16 | Throw MCE if conversion to vbin16 fails | Y |
properties | user-id | binary | message-properties | user-id | vbin16 | if conversion to vbin16 fails do not set this field | Y |
properties | reply-to | string | message-properties | reply-to | reply-to | See secton "Address Conversion" Throw MCE if conversion of exchange or routingKey to str8 fails | Y |
properties | creation-time | timestamp /ulong | delivery-properties | timestamp | datetime | when creation-time is not set, arrival-time is set as a timestamp | Y |
properties | subject | string | message-properies | headers['qpid.subject'] | str16 | if 'qpid.subject' is already in the application-properties it will not be overridden | Y |
properties | subject | string | message-properties | headers['x-jms-type'] | str16 | if 'x-jms-type' is already in the application-properties it will not be overridden | Y |
properties | subject | string | delivery-properties | routing-key | str8 | Throw MCE if conversion to str8 fails | Y |
properties | group-id | string | message-properies | headers['JMSXGroupID'] | str16 | if 'JMSXGroupId' is already in the application-properties it will not be overridden | Y |
properties | group-sequence | sequence number | message properies | headers['JMSXGroupSeq'] | int | if 'JMSXGroupSeq' is already in the application-properties it will not be overridden | Y |
properties | to | string | delivery-properties | exchange | str8 | See section "Address Conversion" Throw MCE if exchange or routingKey conversion to str8 fails | Y |
properties | to | string | delivery-properties | routing-key | str8 | see above | Y |
application-properties | - | map | message-properties | application-headers | map |
| Y |
content | message-properties | content-length | uint64 |
| Y | ||
header | delivery-count | delivery-properties | redelivered | N |
...
AMQP 1.0 message | internal message | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Section name | Property name | Type | Property class | Property name | type | Comments | Implemented | ||||||||
header | durable | boolean | InternalMessage InternalMessageMetaData | isPersistent() isPersistent() | boolean boolean |
| Y Y | ||||||||
header | priority | unsigned byte | MessageHeader | getPriority() | byte |
| Y | ||||||||
header/properties | ttl /absolute-expiry-time | milliseconds/ulong | MessageHeader | getExpiration() | longCurrently 'absolute-expiry-time' is used but we should change this to 'ttl' (see QPID-7872) | Y | |||||||||
properties | content-type | symbol | MessageHeader | getMimeType() | String |
| TODOY | ||||||||
properties | content-encoding | symbol | MessageHeader | getEncoding() | String | Y | |||||||||
properties | message-id | binary, uuid, ulong, string | MessageHeader | getMessageId() | String | toString() is used for the conversion | Y | ||||||||
properties | correlation-id | binary, uuid, ulong, string | MessageHeader | getCorrelationId() | String | toString() is used for the conversion | Y | ||||||||
properties | user-id | binary | MessageHeader | getUserId() | String | expects 'user-id' to contain UTF-8 bytes. results in mojibake otherwise. | Y | ||||||||
properties | reply-to | string | MessageHeader | getReplyTo() | String | Y | |||||||||
properties | creation-time | timestamp /ulong | MessageHeader | getTimestamp() | long | when creation-time is not set, arrival-time should be set as a timestampis used | YPartial | ||||||||
properties | subject | string | MessageHeaderHeaderMap['qpid.subject'] | String | should this be done? | N | properties | subject | string | InternalMessage | getInitialRoutingAddress() | String | related: QPID-7868 | N | |
properties | group-id | string |
|
| N | ||||||||||
properties | group-sequence | sequence number |
|
| N | ||||||||||
properties | to | string | InternalMessage | getTo() | String | | Y | ||||||||
application-properties | - | map | MessageHeader | HeaderMap | Map |
| Y | ||||||||
header | delivery-count | MessageHeader | redelivered | N |
...
Internal message | AMQP 1.0 message | Implemented
| |||||
---|---|---|---|---|---|---|---|
Property origin | Property name | Type | Section name | Property name | Type | Comments | |
InternalMessage InternalMessageMetaData | isPersistent() isPersistent() | boolean | header | durable | unsigned byte |
| Y |
MessageHeader | getPriority() | byte | header | priority | unsigned byte |
| Y |
MessageHeader | getExpiration() | long | header | ttl | milliseconds |
| Y |
MessageHeader | getExpiration() | long | properties | absolute-expiry-time | timestamp | N | |
MessageHeader | getMessageId() | String | properties | message-id | uuid/string/ulong |
| Y |
MessageHeader | getCorrelationId() | String | properties | correlation-id | binary |
| Y |
MessageHeader | getUserId() | String | properties | user-id | binary |
| Y |
MessageHeader | getTimestamp() | datetime | properties | creation-time | timestamp |
| Y |
MessageHeader | getReplyTo() | String | properties | reply-to | string |
| Y |
InternalMessage | getTo() | String | properties | to | string |
| TODOY |
InternalMessage | getEncoding() | String | properties | content-encoding | symbol |
| Y |
MessageHeader | getContentType() | str8 | properties | content-type | symbol |
| TODOY |
properties | subject | string | N | ||||
MessageHeader | getHeader(String)/getHeaderNames() | String/Enumeration | application-properties | * | MessageConversionException is thrown when string or key is invalid | Y |
...
Internal message | AMQP 0-8...0-9-1 message | Implemented
| ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Property origin | Property name | Type | Section name | Property name | Type | Comments | ||||||||||||
InternalMessage InternalMessageMetaData | isPersistent() isPersistent() | boolean | message property | delivery mode | unsigned byte |
| Y | |||||||||||
MessageHeader | getPriority() | byte | message property | priority | unsigned byte |
| Y | |||||||||||
MessageHeader | getExpiration() | long | message property | expiration | short-string | Y | ||||||||||||
MessageHeader | getMessageId() | String | message property | message-id | short-string | if conversion to short-string fails 'message-id' is not set | Y | |||||||||||
MessageHeader | getCorrelationId() | String | message property | correlation-id | short-string | MessageConversionException is thrown when conversion to short-string fails | Y | |||||||||||
MessageHeader | getUserId() | String | message property | user-id | short-string | if conversion to short-string fails 'user-id' is not set | Y | |||||||||||
MessageHeader | getTimestamp() | datetime | message property | timestamp | long |
| Y | |||||||||||
MessageHeader | getReplyTo() | String | message property | reply-to | short-string | See section Address Conversion then convert to BURL. MessageConversionException is thrown when conversion to short-string fails | Y | InternalMessage | getTo() | String | message property | to | string |
| TODO | |||
InternalMessage | getEncoding() | String | message property | encoding | short-string | MessageConversionException is thrown when conversion to short-string fails | Y | |||||||||||
MessageHeader | getMimeType() | String | message property | content-type | short-string |
| TODOY | |||||||||||
MessageHeader | getContentTypegetHeader(String)/getHeaderNames() | String/Enumeration | message propertycontent-type | headers | shortfield-string |
| TODO | |||||||||||
message property | subject | string | N | |||||||||||||||
table | MessageConversionException is thrown when | MessageHeader | getHeader(String)/getHeaderNames() | String/Enumeration | message property | headers | field-table | MessageConversionException is thrown when key or value is invalid | Y | |||||||||
InternalMessage | getTo() / getInitialRoutingAddress() | basic.publish | exchange, routing-key | short-string | TODO | basic.publish | exchange | short-string | If getTo() is null or the empty string getInitialRoutingAddress() is used instead. Throw MessageConversionException if conversion to short-string fails. | YTODO | ||||||||
basic.publish | immediate | bit | always set to false | N | ||||||||||||||
basic.publish | mandatory | bit | always set to false | N |
AMQP 0-10 message properties conversion into internal message properties
AMQP 0-10 message | Internal message | Implemented
| |||||
---|---|---|---|---|---|---|---|
Property origin | Property name | Type | Class name | Property name | Type | Comments | |
delivery-properties | delivery-mode | uint8 | InternalMessage InternalMessageMetaData | isPersistent() | boolean |
| Y |
delivery-properties | priority | uint8 | MessageHeader | getPriority() | byte |
| Y |
delivery-properties | ttl | uint64 | MessageHeader | getExpiration() | long | the 'ttl' delivery-property takes precedence over 'expiration' | Y |
delivery-properties | expiration | datetime | MessageHeader | getExpiration() | long | the 'ttl' delivery-property takes precedence over 'expiration' | Y |
delivery-properties | timestamp | datetime | MessageHeader | getTimestamp() | long | if not set, the arrival time is used as timestamp | Y |
delivery-properties | redelivered | bit | N | ||||
delivery-properties | routing-key | str8 | InternalMessage | getInitialRoutingAddress() | String | TODOY | |
delivery-properties | exchange | str8 | InternalMessage | getTo() | String | TODOY | |
delivery-properties | immediate | bit |
|
| N | ||
delivery-properties | discard-unroutable | bit |
| N | |||
message-properties | content-type | str8 | InternalMessage | getContentTypegetMimeType() | String |
| TODOY |
message-properties | content-encoding | str8 | MessageHeader | getEncoding() | string |
| Y |
message-properties | message-id | uuid | MessageHeader | getMessageId() | String |
| Y |
message-properties | correlation-id | vbin16 | MessageHeader | getCorrelationId() | String |
| Y |
message-properties | user-id | vbin16 | MessageHeader | getUserId() | String |
| Y |
message-properties | reply-to | reply-to | MessageHeader | getReplyTo() | String | <exchange name>/<routing key> | TODOY |
message-properties | app-id | vbin16 | MessageHeader | getAppId() | String |
| Y |
message-properties | application-headers | map | MessageHeader | getHeadersMap() | Map<String,Object> |
| Y |
message-properties | content-length | uint64 |
|
|
|
|
|
message-properties | application-headers['x-jms-type'] | str16 | MessageHeader | getType() | String | 'x-jms-type' is not removed from application headers | Y |
...
Internal message | AMQP 0-10 message | Implemented
| |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Property origin | Property name | Type | Segment name | Property name | Type | Comments | |||||||||
InternalMessage InternalMessageMetaData | isPersistent() isPersistent() | boolean | delivery-properties | delivery-mode | uint8 |
| Y | ||||||||
MessageHeader | getPriority() | byte | delivery-properties | priority | uint8 |
| Y | ||||||||
MessageHeader | getExpiration() | long | delivery-properties | ttl | uint64 | getExpiration() - arrivalTime | Y | ||||||||
MessageHeader | getExpiration() | long | delivery-properties | expiration | datetime | Y | |||||||||
MessageHeader | getMessageId() | String | message-properties | message-id | uuid | if conversion to uuid fails 'message-id' is not set | Y | ||||||||
MessageHeader | getCorrelationId() | String | message-properties | correlation-id | vbin16 | MessageConversionException is thrown when conversion to vbin16 fails | Y | ||||||||
MessageHeader | getUserId() | String | message-properties | user-id | vbin16 | if conversion to vbin16 fails 'user-id' is not set | Y | ||||||||
MessageHeader | getTimestamp() | datetime | delivery-properties | timestamp | datetime | if timestamp is not set arrivalTime will be used as timestamp | Y | ||||||||
MessageHeader | getReplyTo() | String | message-properties | reply-to | reply-to | See section Address Conversion MessageConversionException should be is thrown when conversion to str8 fails. | TODOY | ||||||||
InternalMessage | getTo()/getInitialRoutingKey() | String | delivery-properties |
|
| exchange, routing-key | str8 | If getTo() is null or the empty string getInitialRoutingAddress() is used instead. MessageConversionException is thrown when conversion to str8 fails. | YTODO | ||||||
InternalMessage | getEncoding() | String | message-properties | content-encoding | str8 | MessageConversionException is thrown when conversion to str8 fails | Y | ||||||||
MessageHeader | getMimeType() | String | message-properties | content-type | str8 |
| TODOT | ||||||||
MessageHeader | getContentType() | String | message-properties | content-type | str8 |
| TODO | MessageHeader | getHeader(String)/getHeaderNames() | String/Enumeration | message-properties | application-headers | map | MessageConversionException is thrown when key or value is invalid | Y |
InternalMessage | message-properties | content-length | uint64 | Y | |||||||||||
delivery-properties | routing-key | str8 | TODO | ||||||||||||
delivery-properties | exchange | str8 | TODO | ||||||||||||
delivery-properties | immediate | bit | N | ||||||||||||
delivery-properties | discard-unroutable | bit | N |
...