AMQP 0-9-1 Protocol Extensions
Overview
RabbitMQ implements a number of extensions of the AMQP 0-9-1 specification, which we document here.
Some extensions introduce new protocol methods (operations); others rely on existing extension points such as optional queue arguments.
Publishing
- Publisher Confirms (aka Publisher Acknowledgements) are a lightweight way to know when RabbitMQ has taken responsibility for messages.
- Blocked Connection Notifications allows clients to be notified when a connection is blocked and unblocked.
Consuming
- Consumer Cancellation Notifications let a consumer know if it has been cancelled by the server.
basic.nack
extendsbasic.reject
to support rejecting multiple messages at once.- Consumer Priorities allow you to send messages to higher priority consumers first.
- Direct reply-to allows RPC clients to receive replies to their queries without needing to declare a temporary queue.
Message Routing
- Exchange to Exchange Bindings allow messages to pass through multiple exchanges for more flexible routing.
- Alternate Exchanges route messages that were otherwise unroutable.
- Sender-selected Distribution allows a publisher to decide where messages are routed directly.
Message Lifecycle
- Per-Queue Message TTL determines how long an unconsumed message can live in a queue before it is automatically deleted.
- Per-Message TTL determines the TTL on a per-message basis.
- Queue TTL determines how long an unused queue can live before it is automatically deleted.
- Dead Letter Exchanges ensure messages get re-routed when they are rejected or expire.
- Queue Length Limit allows the maximum length of a queue to be set.
- Priority Queues support the message priority field (in a slightly different way).
Authentication and Identity
- The User-ID message property is validated by the server.
- Clients that advertise the appropriate capability may receive explicit authentication failure notifications from the broker.
update-secret
to be able to renew credentials for an active connection, when those credentials can expire.
AMQP 0-9-1 Spec Differences
Some features that were in AMQP 0-8 were deprecated in AMQP 0-9-1. We have undeprecated some of them and introduced a couple of tiny behaviour changes that improve usability of the product. Please refer to the spec differences page.
There's also an AMQP 0-9-1 Errata page which explains how various