# amqp-node/amqplib

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/amqp-node-amqplib).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

3,847 stars · 472 forks · JavaScript · NOASSERTION

## Links

- GitHub: https://github.com/amqp-node/amqplib
- Homepage: https://amqp-node.github.io/amqplib/
- awesome-repositories: https://awesome-repositories.com/repository/amqp-node-amqplib.md

## Topics

`amqp` `amqp-0-9-1` `nodejs` `rabbitmq` `rabbitmq-client`

## Description

amqplib is a Node.js client library for AMQP 0-9-1 message brokers such as RabbitMQ. Applications use it to open a connection to a broker, create channels, and publish and consume messages through queues and exchanges. The same operations are available through a promise-based interface and a callback interface, so code can follow whichever asynchronous style a project already uses. Under the client API sits a codec that encodes and decodes protocol frames and handles connection and channel handshakes.

The library covers reliability and flow control as well as basic messaging. Consumers acknowledge, reject, or requeue deliveries. Publishers can use confirmation-mode channels so the server acknowledges each published message. A prefetch count caps unacknowledged messages, and publish calls return a boolean and emit a drain event so producers can pause when the channel buffer is full. For long-running services, a connection can reconnect automatically after a drop, with configurable backoff, jitter, and retry limits. Initial connection retries can be bounded separately, and a setup step can be rerun to recreate queues and consumers. Heartbeats monitor connection liveness, and exceptions thrown in user-supplied event listeners are routed to a dedicated handler instead of silently closing channels or connections.

Messaging operations are exposed as methods on channel objects, which refer to exchanges and queues by name. Required protocol arguments are passed as method parameters, and optional arguments, properties, and extensions are merged into a single options argument. The library supports declaring exchanges of different types, binding queues to them with patterns, and managing queues with durability, expiry, length, priority, and dead-letter settings. Messages can be published to an exchange or directly to a queue, consumed through a callback, or fetched one at a time on demand.

## Tags

### Data & Databases

- [AMQP](https://awesome-repositories.com/f/data-databases/connection-managers/redis/protocol-implementations/amqp.md) — A Node.js client library for AMQP 0-9-1 brokers such as RabbitMQ, opening channels and publishing and consuming messages.
- [Message Broker Connectivity](https://awesome-repositories.com/f/data-databases/redis-clients/cluster-connectivity/message-broker-connectivity.md) — Connects Node.js applications to AMQP 0-9-1 brokers such as RabbitMQ and creates channels for messaging operations. ([source](https://github.com/amqp-node/amqplib#readme))

### DevOps & Infrastructure

- [Asynchronous Message Publishing](https://awesome-repositories.com/f/devops-infrastructure/queue-management/message-queues/asynchronous-message-publishing.md) — Publishes messages to an exchange or directly to a queue, with options for routing keys, persistence, expiry, priority and headers. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Message Queue Configurations](https://awesome-repositories.com/f/devops-infrastructure/queue-management/message-queues/message-queue-configurations.md) — Declares queues, publishes messages to them and delivers incoming messages to a consumer callback that acknowledges each message after processing. ([source](https://github.com/amqp-node/amqplib#readme))
- [Reliable Message Delivery](https://awesome-repositories.com/f/devops-infrastructure/message-queues/reliable-message-delivery.md) — Combines consumer acknowledgements, publisher confirmations, persistence, and redelivery so important messages are not lost.

### Networking & Communication

- [Message Acknowledgement Handlers](https://awesome-repositories.com/f/networking-communication/incoming-message-processors/message-acknowledgement-handlers.md) — Lets consumers acknowledge, reject or requeue delivered messages individually or in bulk so the broker knows what was processed. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Message Broker Consumers](https://awesome-repositories.com/f/networking-communication/message-broker-consumers.md) — Registers a callback that receives each queue message, with options for priority, exclusivity and automatic acknowledgement, and supports cancelling the consumer. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Message Brokers](https://awesome-repositories.com/f/networking-communication/message-brokers.md) — Acts as a client for message brokers, declaring queues and exchanges, routing messages, and acknowledging deliveries between services.
- [Connection Resilience](https://awesome-repositories.com/f/networking-communication/resilient-networking-tools/connection-resilience.md) — Reconnects automatically after a dropped connection using configurable backoff delay, jitter and retry limits, through promise or callback interfaces. ([source](https://github.com/amqp-node/amqplib/blob/main/CHANGELOG.md))
- [Channel-Based Messaging Operations](https://awesome-repositories.com/f/networking-communication/channel-based-messaging-operations.md) — Exposes messaging operations as methods on channel objects, with exchanges and queues referenced by name in method arguments. ([source](https://amqp-node.github.io/amqplib/))
- [Publishing Confirmations](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging/publishing-confirmations.md) — Offers confirmation-mode channels where the server acknowledges each published message, with per-message callbacks and a wait for all outstanding confirmations. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Message Queue Declarations](https://awesome-repositories.com/f/networking-communication/message-queue-declarations.md) — Declares queues idempotently with durability, expiry, length, priority, and dead-letter settings, and can purge undelivered messages on demand. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Message Routing](https://awesome-repositories.com/f/networking-communication/message-routing.md) — Declares exchanges of different types and binds queues with patterns so messages reach destinations by routing key, with durability, expiry, priority, and dead-letter settings.
- [Exchange-Based Routing](https://awesome-repositories.com/f/networking-communication/messaging-channel-management/pub-sub-subscriptions/pattern-based-routing/exchange-based-routing.md) — Declares exchanges of different types and binds queues or other exchanges using patterns so messages route by exchange type. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Consumer Prefetch Limits](https://awesome-repositories.com/f/networking-communication/quality-of-service-implementations/consumer-prefetch-limits.md) — Sets a prefetch count capping unacknowledged messages per consumer or per channel so slow consumers are not flooded. ([source](https://amqp-node.github.io/amqplib/channel_api.html))
- [Automatic Connection Recovery](https://awesome-repositories.com/f/networking-communication/remote-server-connectivity/persistent-connection-enablements/automatic-connection-recovery.md) — Reconnects automatically after a dropped connection with configurable delay, backoff, jitter, and retry limits, then reruns setup to recreate queues and consumers. ([source](https://github.com/amqp-node/amqplib#readme))

### Programming Languages & Runtimes

- [Promise-Callback Unification](https://awesome-repositories.com/f/programming-languages-runtimes/promise-callback-unification.md) — Offers the same messaging client interface in both promise-based and callback-based versions so developers can match their existing asynchronous style. ([source](https://amqp-node.github.io/amqplib/))

### Software Engineering & Architecture

- [Backpressure Controls](https://awesome-repositories.com/f/software-engineering-architecture/backpressure-controls.md) — Limits unacknowledged messages with a prefetch count and returns a boolean plus a drain event so producers can pause when buffers fill.
