Node Permanently Moved

    amqplib
    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.assertQueue(queue);
    
        ch2.consume(queue, (msg) => {
          if (msg !== null) {
            console.log(msg.content.toString());
            ch2.ack(msg);
          } else {
            console.log('Consumer cancelled by server');
          }
        });
      });
    
      // Sender
      conn.createChannel((err, ch1) => {
        if (err) throw err;
    
        ch1.assertQueue(queue);
    
        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());
          ch1.ack(msg);
        } 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 dev.rabbitmq.com:

    URL=amqp://dev.rabbitmq.com npm test
    

    NB You may experience test failures due to timeouts if using the dev.rabbitmq.com 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
    

    Install

    npm i amqplib

    DownloadsWeekly Downloads

    989,510

    Version

    0.10.3

    License

    MIT

    Unpacked Size

    403 kB

    Total Files

    68

    Last publish

    Collaborators

    • squaremo
    • cressie176