Node Permanently Moved

    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/amqplib package

    0.10.3 • Public • Published

    AMQP 0-9-1 library and client for Node.JS

    NPM version NPM downloads Node.js CI amqplib

    npm install amqplib

    A library for making AMQP 0-9-1 clients for Node.JS, and an AMQP 0-9-1 client for Node.JS v10+.

    This library does not implement AMQP 1.0 or AMQP 0-10.

    Project status:

    • Expected to work
    • Complete high-level and low-level APIs (i.e., all bits of the protocol)
    • Stable APIs
    • A fair few tests
    • Measured test coverage
    • Ports of the RabbitMQ tutorials as examples
    • Used in production

    Still working on:

    • Getting to 100% (or very close to 100%) test coverage

    Callback API example

    const amqplib = require('amqplib/callback_api');
    const queue = 'tasks';
    amqplib.connect('amqp://localhost', (err, conn) => {
      if (err) throw err;
      // Listener
      conn.createChannel((err, ch2) => {
        if (err) throw err;
        ch2.consume(queue, (msg) => {
          if (msg !== null) {
          } else {
            console.log('Consumer cancelled by server');
      // Sender
      conn.createChannel((err, ch1) => {
        if (err) throw err;
        setInterval(() => {
          ch1.sendToQueue(queue, Buffer.from('something to do'));
        }, 1000);

    Promise/Async API example

    const amqplib = require('amqplib');
    (async () => {
      const queue = 'tasks';
      const conn = await amqplib.connect('amqp://localhost');
      const ch1 = await conn.createChannel();
      await ch1.assertQueue(queue);
      // Listener
      ch1.consume(queue, (msg) => {
        if (msg !== null) {
          console.log('Recieved:', msg.content.toString());
        } else {
          console.log('Consumer cancelled by server');
      // Sender
      const ch2 = await conn.createChannel();
      setInterval(() => {
        ch2.sendToQueue(queue, Buffer.from('something to do'));
      }, 1000);

    Running tests

    npm test

    To run the tests RabbitMQ is required. Either install it with your package manager, or use docker to run a RabbitMQ instance.

    docker run -d --name amqp.test -p 5672:5672 rabbitmq

    If prefer not to run RabbitMQ locally it is also possible to use a instance of RabbitMQ hosted elsewhere. Use the URL environment variable to configure a different amqp host to connect to. You may also need to do this if docker is not on localhost; e.g., if it's running in docker-machine.

    One public host is

    URL=amqp:// npm test

    NB You may experience test failures due to timeouts if using the instance.

    You can run it under different versions of Node.JS using nave:

    nave use 10 npm test

    or run the tests on all supported versions of Node.JS in one go:

    make test-all-nodejs

    (which also needs nave installed, of course).

    Lastly, setting the environment variable LOG_ERRORS will cause the tests to output error messages encountered, to the console; this is really only useful for checking the kind and formatting of the errors.

    LOG_ERRORS=true npm test

    Test coverage

    make coverage
    open file://`pwd`/coverage/lcov-report/index.html


    npm i amqplib

    DownloadsWeekly Downloads






    Unpacked Size

    403 kB

    Total Files


    Last publish


    • squaremo
    • cressie176