AMQP 0-9-1 Error Codes

AMQP reply codes and condition strings with class context and soft/hard flag.

Searchable AMQP 0-9-1 reply code reference. Look up any code by number or constant name, see whether it is a soft channel error or a hard connection error, and read the cause behind it.

What is the difference between an AMQP soft and hard error?

A soft error closes only the channel that caused it, leaving the underlying connection alive so you can open a new channel and continue. A hard error closes the entire connection, dropping every channel on it. Codes like 404 not-found and 406 precondition-failed are soft, while the 5xx codes and connection-forced (320) are hard.

The AMQP 0-9-1 Error Codes reference is a searchable lookup for the reply codes carried by the AMQP 0-9-1 protocol used by RabbitMQ and other brokers. When a channel or connection closes unexpectedly, the broker sends a Channel.Close or Connection.Close method containing a numeric reply code and a constant name — and the difference between 404 not-found and 406 precondition-failed is the difference between a missing resource and a mismatched declaration.

How it works

AMQP 0-9-1 reports failures by closing either a single channel or the whole connection, and the closing method carries a reply code plus a constant string:

Soft error  → Channel.Close   → connection stays open, channel dies
Hard error  → Connection.Close → entire connection (all channels) dies

The reply code is a small integer (200, 311, 403, 404, 406, 501, 540, …) paired with a stable constant name such as not-found or precondition-failed. The 3xx codes are mostly soft (channel-level), while the 5xx codes and the connection-level 3xx codes (320 connection-forced, 402 invalid-path) are hard. This tool keeps the full constant table in your browser and filters it by number, name, level or severity.

Example and tips

Most application-level failures you debug are soft channel errors: 403 access-refused (permissions), 404 not-found (undeclared exchange/queue), 405 resource-locked (exclusive queue in use) and 406 precondition-failed (redeclaring with different arguments). Because a soft error tears down the channel, your client library must open a fresh channel afterwards — reusing the closed one fails. Hard errors such as 501 frame-error, 503 command-invalid and 541 internal-error usually indicate a protocol or broker problem rather than something in your message, so read the accompanying text and check broker logs. Prefer matching on the constant name over the bare number, since names are consistent across client libraries.