The Advanced Message Queuing Protocol (AMQP) Overview
LavinMQ implements the AMQP 0-9-1 protocol. This page covers LavinMQ’s specific defaults, capabilities, and extensions. For the full protocol specification, see the AMQP 0-9-1 spec.
Ports
| Config Key | Default Port |
|---|---|
amqp_port |
5672 |
amqps_port |
5671 |
http_port |
15672 (AMQP over WebSocket shares the HTTP port) |
Unix domain sockets are also supported via unix_path in the [amqp] config section.
Server Defaults
| Config Key | Default |
|---|---|
frame_max |
131,072 bytes |
channel_max |
2,048 |
heartbeat |
300 seconds |
max_message_size |
128 MB |
default_consumer_prefetch |
65,535 |
The server proposes these values during connection negotiation. The client may negotiate lower (but not higher) for frame_max and channel_max. For heartbeat, the lower non-zero value is used.
Capabilities
On top of the AMQP 0-9-1 spec, LavinMQ also supports:
- Publisher confirms — acknowledgment that the server received a message. See Publisher Confirms.
- Consumer cancel notify — server sends
basic.cancelwhen a queue is deleted. See Consumers. - Exchange-to-exchange bindings — bind exchanges to other exchanges. See Bindings.
- basic.nack — negative acknowledgment with multi-message support. See Consumers.
- Per-consumer QoS — prefetch scoped to individual consumers. See Channels.
- Direct reply-to — RPC without temporary queues. See Messages.
- Authentication failure close — server closes the connection with a reason on auth failure.
- Consumer priorities — consumers can declare priority to influence delivery order. See Consumers.
Authentication Mechanisms
- PLAIN — username and password
- AMQPLAIN — AMQP-specific encoding of username and password
Credentials are validated against the configured authentication chain.
LavinMQ-Specific Behavior
- Blocked publishing: when free disk space drops below
3 * segment_sizeor belowfree_disk_min,basic.publishreturns aprecondition_failedchannel error until resources recover. - Consumer timeout: a consumer’s channel is closed if its oldest unacknowledged message exceeds the configured timeout. See Consumers.
- Channel flow: clients can pause their own delivery via
channel.flow. See Channels. - Transactions: supported but mutually exclusive with publisher confirms on the same channel. See Transactions.
Further Reading
- Connections — connection lifecycle, heartbeats, proxy protocol
- Channels — channel multiplexing, prefetch, flow control
- Exchanges — exchange types and routing
- Queues — queue types and arguments
- Messages — publishing, properties, CC/BCC, direct reply-to
- Consumers — acknowledgment, prefetch, single active consumer
Ready to take the next steps?
Managed LavinMQ instance via CloudAMQP
LavinMQ has been built with performance and ease of use in mind - we've benchmarked a throughput of about 1,000,000 messages/sec . You can try LavinMQ without any installation hassle by creating a free instance on CloudAMQP. Signing up is a breeze.
Get started with CloudAMQP ->Help and feedback
We welcome your feedback and are eager to address any questions you may have about this piece or using LavinMQ. Join our Slack channel to connect with us directly. You can also find LavinMQ on GitHub.