# LavinMQ > LavinMQ is an open-source, high-performance message broker written in Crystal that implements the AMQP 0-9-1 and MQTT protocols. It's designed for high throughput (>1M msg/s), low resource usage, and scalability through clustering, making it ideal for IoT, background jobs, microservices, and distributed systems. Important notes: - LavinMQ is writte in Crystal - LavinMQ is AMQP 0-9-1 compatible, meaning it works with existing RabbitMQ and AMQP client libraries across nearly every programming language - LavinMQ supports clustering for high availability using etcd and the Raft consensus algorithm - LavinMQ supports both AMQP and MQTT protocols - LavinMQ Streams provides message streaming capabilities similar to Kafka, allowing message replay and retention policies - The Management Interface provides a web-based UI for monitoring and configuring queues, exchanges, and connections ## Getting Started - [Getting started guide](https://lavinmq.com/documentation/getting-started): New user guide covering hosted instances via CloudAMQP and self-hosted installation options - [Installation guide](https://lavinmq.com/documentation/installation-guide): Complete guide for setting up LavinMQ independently on Linux systems - [Beginner tutorials](https://lavinmq.com/documentation/beginner-tutorials): Hands-on tutorials for learning LavinMQ fundamentals with practical examples ## Core AMQP Concepts - [AMQP protocol overview](https://lavinmq.com/documentation/amqp-the-protocol): Introduction to AMQP 0-9-1 and how LavinMQ uses it for asynchronous messaging - [Queues](https://lavinmq.com/documentation/amqp-queues): How to create and configure message queues, including properties and arguments - [Exchanges](https://lavinmq.com/documentation/amqp-exchanges): The four exchange types (direct, fanout, topic, header) and how messages are routed - [Bindings](https://lavinmq.com/documentation/amqp-bindings): Rules that connect queues to exchanges for message routing - [Messages](https://lavinmq.com/documentation/amqp-messages): Message structure, headers, properties, and lifecycle - [Connections and channels](https://lavinmq.com/documentation/amqp-connections-and-channels): TCP connections and virtual channels for multiplexing - [Virtual hosts](https://lavinmq.com/documentation/amqp-vhost): Isolated namespaces for multi-tenancy and resource separation - [Publishers and consumers](https://lavinmq.com/documentation/publishers-and-consumers): How to send and receive messages ## Advanced Features - [Clustering](https://lavinmq.com/documentation/clustering): Setting up leader-follower replication for high availability using etcd - [LavinMQ Streams](https://lavinmq.com/documentation/message-streaming-with-lavinmq): Message streaming with replay, offsets, and retention policies - [MQTT in LavinMQ](https://lavinmq.com/documentation/mqtt-in-lavinmq): Using the MQTT protocol for IoT device communication - [Federation](https://lavinmq.com/documentation/federation): Distributing messages across brokers in different locations - [Shovel](https://lavinmq.com/documentation/shovel): Moving messages between queues, vhosts, or brokers - [Policies](https://lavinmq.com/documentation/policies): Applying configuration to groups of queues or exchanges - [Webhooks](https://lavinmq.com/documentation/webhooks): HTTP callbacks triggered by queue events ## Reliable Messaging Patterns - [Publisher confirms](https://lavinmq.com/documentation/publisher-confirms): Ensuring messages are successfully published - [Consumer acknowledgements](https://lavinmq.com/documentation/consumer-acknowledgements): Confirming message processing and handling failures - [Reliable delivery overview](https://lavinmq.com/documentation/reliable-delivery-overview): Complete guide to message reliability guarantees - [Dead letter exchange](https://lavinmq.com/documentation/dead-letter-exchange): Handling failed or rejected messages - [Message priority](https://lavinmq.com/documentation/message-priority): Prioritizing urgent messages in queues - [Prefetch](https://lavinmq.com/documentation/prefetch): Controlling how many messages consumers receive at once - [Transactions](https://lavinmq.com/documentation/transactions): Atomic message publishing and acknowledgement ## Management & Operations - [Management interface overview](https://lavinmq.com/documentation/management-interface-overview): Web UI for monitoring and configuration - [Management HTTP API](https://docs.lavinmq.com/docs/): REST API for programmatic management - [LavinMQctl](https://lavinmq.com/documentation/lavinmqctl): Command-line interface for administration - [Configuration files](https://lavinmq.com/documentation/configuration-files): LavinMQ configuration options in lavinmq.ini - [Logging](https://lavinmq.com/documentation/logging): Log levels, formats, and troubleshooting - [Prometheus integration](https://lavinmq.com/documentation/prometheus): Exporting metrics for monitoring - [Import/export definitions](https://lavinmq.com/documentation/import-export-definitions): Backing up and restoring broker configuration ## Sample Code by Language - [Python sample code](https://lavinmq.com/documentation/python-sample-code): Using the Pika library with LavinMQ - [Node.js sample code](https://lavinmq.com/documentation/nodejs-sample-code): Using amqplib with LavinMQ - [Go sample code](https://lavinmq.com/documentation/go-sample-code): Using amqp091-go with LavinMQ - [Crystal sample code](https://lavinmq.com/documentation/crystal-sample-code): Using the native Crystal AMQP client - [Ruby sample code](https://lavinmq.com/documentation/ruby-sample-code): Using the Bunny gem with LavinMQ - [Java sample code](https://lavinmq.com/documentation/java-sample-code): Using the Java AMQP client library - [.NET sample code](https://lavinmq.com/documentation/dot-net-sample-code): Using the RabbitMQ .NET client with LavinMQ - [PHP sample code](https://lavinmq.com/documentation/php-sample-code): Using php-amqplib with LavinMQ ## Optional - [LavinMQ benchmark results](https://lavinmq.com/benchmark): Performance comparisons and throughput measurements - [LavinMQperf tool](https://lavinmq.com/documentation/lavinmqperf): Load testing and benchmarking tool - [Frequently asked questions](https://lavinmq.com/documentation/frequently-asked-questions): Common questions about LavinMQ - [LavinMQ and Celery integration](https://lavinmq.com/documentation/lavinmq-and-celery-task-management): Using LavinMQ with Python's Celery task queue - [Background jobs blog post](https://lavinmq.com/blog/lavinmq-background-jobs): How LavinMQ handles asynchronous task processing - [IoT use case](https://lavinmq.com/blog/optimizing-iot-workflows-with-lavinmq): Using LavinMQ as an IoT hub for millions of devices - [High availability blog post](https://lavinmq.com/blog/lavinmq-high-availability): Deep dive into clustering and replication architecture - [About LavinMQ](https://lavinmq.com/about): History, team, and company background - [Community](https://lavinmq.com/community): Slack, GitHub, and support channels