AMQP

AMQP Connections

A connection is a TCP link between a client and LavinMQ. Both AMQP and MQTT clients establish connections.

AMQP Connections

AMQP connections follow the standard 0-9-1 lifecycle. See AMQP for protocol details.

MQTT Connections

MQTT connections follow the MQTT 3.1.x CONNECT/CONNACK handshake. See MQTT for protocol details.

Heartbeats

AMQP connections use heartbeats to detect dead peers. The heartbeat interval is negotiated during connection setup.

Config Key Section Default Description
heartbeat [amqp] 300 Heartbeat interval in seconds. Set to 0 to disable (not recommended).

During connection setup, the client and server each propose a heartbeat interval and the lower of the two non-zero values wins. The server then expects to see traffic from the client at least that often; if nothing arrives within that interval plus a 5-second grace period, the connection is closed as dead. Setting the interval to 0 disables heartbeats entirely, which means dead peers are never detected and is not recommended.

Proxy Protocol

LavinMQ supports HAProxy PROXY protocol for preserving client IP addresses behind load balancers.

Config Key Section Default Description
tcp_proxy_protocol [amqp] false Enable PROXY protocol on TCP, applies to AMQP and MQTT. Accepts true/false/yes/no; legacy 1/2 are treated as enabled, 0 disables.
proxy_protocol_trusted_sources [amqp] (empty) Comma-separated list of IPs and CIDR blocks (IPv4/IPv6) allowed to send PROXY headers, e.g. 10.0.0.1, 192.168.0.0/24, 2001:db8::/32.

PROXY protocol v1 (text) and v2 (binary) are auto-detected. Only connections from trusted sources may send PROXY headers; headers from untrusted sources are ignored and the real connection address is used. If tcp_proxy_protocol is enabled but proxy_protocol_trusted_sources is empty, headers are accepted from all sources and a warning is logged at startup.

Low Disk Space

When free disk space drops below 3 * segment_size or below free_disk_min, basic.publish returns a precondition_failed channel error until resources recover.

Config Key Section Default Description
free_disk_min [main] 0 Minimum free disk space in bytes. Publishing is blocked when free space drops below this value.
free_disk_warn [main] 0 Warning threshold in bytes. Emits warnings when free space drops below this value.
segment_size [main] 8388608 Segment file size (bytes). Publishing is also blocked when free space drops below 3 * segment_size.

Connection Limits

Concurrent connections to a vhost can be capped with the max-connections vhost limit. Once the cap is reached, new connections to that vhost are refused with connection.close carrying reply code 530 (NOT_ALLOWED); existing connections are unaffected.

Limit Default Description
max-connections (none) Maximum concurrent connections per vhost. A negative value removes the cap.

Set via the management API (PUT /api/vhost-limits/:vhost/max-connections) or lavinmqctl set_vhost_limits. See Vhosts.

TCP Tuning

Config Key Section Default Description
tcp_nodelay [main] false Disable Nagle’s algorithm
tcp_keepalive [main] 60:10:3 Idle, interval, probes (colon-separated)
tcp_recv_buffer_size [main] (system) TCP receive buffer
tcp_send_buffer_size [main] (system) TCP send buffer
socket_buffer_size [main] 16384 Application socket buffer (bytes)

Unix Domain Sockets

LavinMQ can listen on Unix domain sockets for all protocols:

Config Key Section Description
unix_path [amqp] AMQP Unix socket path
unix_path [mqtt] MQTT Unix socket path
unix_path [mgmt] HTTP Unix socket path

Unix sockets auto-detect PROXY protocol headers if present to receive connection metadata.


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.


Can’t find what you’re looking for? Let us know
Was this helpful?

Search