Protocol Extensions

Overview

The 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

Consuming

Message Routing

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