An idiomatic Elixir wrapper for the Erlang RabbitMQ client, implementing the AMQP 0.9.1 protocol.
AMQP is an Elixir client library for RabbitMQ that provides an idiomatic wrapper around the Erlang RabbitMQ client. It implements the AMQP 0.9.1 protocol, allowing Elixir applications to publish and consume messages from RabbitMQ brokers. The library simplifies interaction with RabbitMQ by offering an Elixir-friendly API while maintaining compatibility with RabbitMQ 3.x and 4.x.
Elixir developers building distributed systems, microservices, or event-driven applications that require reliable message queuing with RabbitMQ.
Developers choose AMQP because it provides a clean, idiomatic Elixir interface to RabbitMQ, reducing the complexity of using the underlying Erlang client. It includes built-in support for connection management, consumer patterns, and configuration, making it a robust choice for production Elixir applications.
Idiomatic Elixir client for RabbitMQ
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Wraps the Erlang RabbitMQ client with a clean, Elixir-native API, making it intuitive for developers familiar with Elixir idioms, as shown in the straightforward connection and channel examples.
Supports automatic reconnection and declarative configuration via application settings, ensuring reliability in production environments, detailed in the configuration section.
Includes detailed GenServer-based consumer implementations with support for acknowledgments, error handling, and dead letter queues, as evidenced by the full code sample in the README.
Fully implements AMQP 0.9.1 and maintains compatibility with RabbitMQ 3.x and 4.x, leveraging the official Erlang client for proven reliability.
Explicitly does not support AMQP 1.0, as stated in the FAQ, limiting access to newer RabbitMQ protocol features and requiring alternative clients for future-proofing.
Multiple upgrade guides (e.g., 0.x to 1.x, 1.x to 2.x) indicate frequent breaking changes between major versions, which can disrupt long-term project maintenance.
Requires developers to manually manage acknowledgments, consumer resubscriptions, and exception handling, increasing complexity and risk of issues like consumer stoppage, as noted in troubleshooting.