Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/amqp.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ The following table describes the outcomes when the client is the sender/publish
| AMQP 1.0 Outcome | Equivalent AMQP 0.9.1 Frame | Description |
| --- | --- | --- |
| [Accepted](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-accepted) | `basic.ack` | **All** queues the message was routed to have accepted the message. For example for [quorum queues](./quorum-queues), this means a majority of quorum queue replicas have written the message to disk. The publisher can therefore forget/delete the message. |
| [Rejected](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-rejected) | `basic.nack` | At least one queue the message was routed to rejected the message. This happens when the [queue length](./maxlength) is exceeded and the queue's [overflow](./maxlength#overflow-behaviour) behaviour is set to `reject-publish` or when a target [classic queue](./classic-queues) is unavailable.<br/>RabbitMQ also rejects messages as specified in [Using the AMQP Anonymous Terminus for Message Routing](https://docs.oasis-open.org/amqp/anonterm/v1.0/cs01/anonterm-v1.0-cs01.html#doc-routingerrors), for example if a message's `to` field of the [properties](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-properties) section contains an invalid address or defines a non-existing exchange. |
| [Rejected](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-rejected) | `basic.nack` | At least one queue rejected the message, either because the [queue length](./maxlength) limit was exceeded (when [overflow](./maxlength#overflow-behaviour) is set to `reject-publish`) or because a target [classic queue](./classic-queues) is unavailable. The [`error`](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#type-error) field's `info` map contains keys `queue` (with the queue name as value) and `reason` (with value `maxlen` or `unavailable`).<br/>RabbitMQ also rejects messages as specified in [Using the AMQP Anonymous Terminus for Message Routing](https://docs.oasis-open.org/amqp/anonterm/v1.0/cs01/anonterm-v1.0-cs01.html#doc-routingerrors), for example if a message's `to` field of the [properties](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-properties) section contains an invalid address or defines a non-existing exchange. |
| [Released](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-released) | `basic.return` (followed by `basic.ack` or `basic.nack`) | RabbitMQ could not route the message to any queue. This indicates a topology misconfiguration, for example when no matching queue is bound to the target exchange. |
| [Modified](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-modified) | | Currently, RabbitMQ does not settle a message with the modified outcome. |

Expand Down Expand Up @@ -300,6 +300,7 @@ This section lists features that RabbitMQ supports exclusively in AMQP 1.0, whic
* **WebSocket**: [VMware Tanzu RabbitMQ](https://www.vmware.com/products/app-platform/tanzu-rabbitmq) supports [AMQP 1.0 over WebSocket](/blog/2025/04/16/amqp-websocket) allowing applications running in a browser to communicate with RabbitMQ using AMQP 1.0.
* **[Modified Outcome](#modified-outcome)**: Allows a quorum queue consumer to add and modify [message annotations](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-message-annotations) when requeueing or dead lettering a message.
* **[Sender Settle Mode](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#type-sender-settle-mode) `mixed`**: Allows a publisher to decide on a per-message basis whether to receive [confirmations](./confirms#publisher-confirms) from the broker.
* **Detailed Rejection Information**: When RabbitMQ rejects a message, publishers receive the queue name and rejection reason in the [`Rejected` outcome](#outcomes), allowing them to identify which specific queue rejected the message and why. This is particularly useful when multiple queues are bound to a target exchange.
* **Well defined [types](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html)**
* **Better defined [message headers](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#section-message-format)**
* **Enhanced Message Integrity**: Clients can set message hashes, checksums, and digital signatures not only over the message body but also over the [properties](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-properties) and [application-properties](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-application-properties) sections, as the bare message is immutable.
Expand Down