[AIX, Linux, Windows]

AMQP 1.0 support

AMQP channels provide a level of support for AMQP 1.0-compliant applications.

[MQ 9.2.0 Jul 2020]AMQP channels support a subset of the AMQP 1.0 protocol. You can connect AMQP 1.0 compatible clients to an IBM® MQ AMQP channel. To use all of the messaging features supported by AMQP channels, you must correctly set the value of certain AMQP 1.0 fields.

This information outlines the way AMQP fields must be formatted and lists the features of the AMQP 1.0 specification that are not supported by AMQP channels.

The following features of the AMQP 1.0 specification are either not supported or are limited in their use:

[MQ 9.2.1 Dec 2020]

ATTACH frame

AMQP channels expect the capabilities in ATTACH frame to contain one of the following:
  • topic
  • temporary queue
  • queue
  • shared

Capabilities imply the type of object, and in the case of multi-capabilities, the order of priority of selecting the capability is topic, temporary-queue, queue.

If a capability does not contain an expected value, the default capability is topic. Any other capabilities are ignored.
Note: Some AMQP clients do not set these capabilities and will get the IBM MQ default behavior of publish/subscribe. For example, the Quarkus Reactive Messaging AMQP 1.0 Connector only sets capabilities from version 2.8.0CR1 onwards.
[MQ 9.2.2 Mar 2021]AMQP channels expect the distribution-Mode on the ATTACH frame to contain one of the following, for a source or target:
  • move
  • copy
where move implies a destructive get, and copy implies browser.
Note: If the distribution-Mode is not set, or set to anything other than copy, move is assumed.

Link names

AMQP channels expect the name of an AMQP link to follow one of five formats:
  • A plain topic (for publishing and subscribing)
    • Publishing messages: a plain topic string (for example, a link name of "/sports/football") causes a message to be published on the /sports/football topic.
    • Subscribing to a topic to receive messages: a plain topic string (for example, a link name of "/sports/football" causes a subscription to be defined on the /sports/football topic.
  • A private verbose topic (for subscribing)
    • A verbose topic string that describes a private subscription in the form: "private:topic string" (for example: "private:/sports/football"). The behavior is identical to a plain topic string. The private declaration differentiates a subscription specific to a particular AMQP client from a subscription shared between clients.
  • A shared verbose topic (for subscribing)
    • A verbose topic string that describes a shared subscription in the form: "share:share name:topic string" (for example: "share:bbc:/sports/football").
  • [MQ 9.2.1 Dec 2020]A queue (for point to point messaging for producer and consumer)
    • Producer to send messages; a queue name string causes a producer to send a message on a queue.
    • Consumer to receive messages; a queue name string causes a consumer to receive messages from a queue.
  • [MQ 9.2.1 Dec 2020]Blank (for point to point messaging on a temporary queue )
    • Producer to send messages on a temporary queue; Blank causes a producer to send a message on a temporary queue.
    • Consumer to receive messages on a temporary queue; Blank causes a consumer to receive messages from a temporary queue.
For more information about the way AMQP messages are mapped to and from IBM MQ messages see Mapping AMQP fields onto IBM MQ fields (incoming messages).

Maximum lengths for topic strings, share names, and client IDs

The topic string, share name, and client ID must be contained within 10237 bytes. In addition, the maximum length of a client ID is 256 characters.

These maximum lengths mean that you can have one of the following:
  • a very long topic string, provided that the share name is short
  • a long share name, but a short topic string

Container IDs

AMQP channels expect the container-id of an AMQP Open performative to contain a unique AMQP client ID. The maximum length of an AMQP client ID is 256 characters and the ID can contain alphanumeric characters, percent sign (%), slash (/), period (.) and underscore (_).

Sessions

AMQP channels support only a single AMQP session. An AMQP client that attempts to create more than one AMQP session receives an error message and is disconnected from the channel.

Transactions

AMQP channels do not support AMQP transactions. An AMQP attach frame that attempts to coordinate a new transaction or an AMQP transfer frame that attempts to declare a new transaction is rejected with an error message.

Delivery state

[MQ 9.2.0 Jul 2020]AMQP channels only support a delivery state for disposition frames of Accepted, Released, or Modified. Note that, where a state of Modified is used, AMQP channels do not support the undeliverable-here option.