0.8.0 • Published 4 months ago

amqplib v0.8.0

Weekly downloads
595,134
License
MIT
Repository
github
Last release
4 months ago

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

Build Status

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

var q = 'tasks';

function bail(err) {
  console.error(err);
  process.exit(1);
}

// Publisher
function publisher(conn) {
  conn.createChannel(on_open);
  function on_open(err, ch) {
    if (err != null) bail(err);
    ch.assertQueue(q);
    ch.sendToQueue(q, Buffer.from('something to do'));
  }
}

// Consumer
function consumer(conn) {
  var ok = conn.createChannel(on_open);
  function on_open(err, ch) {
    if (err != null) bail(err);
    ch.assertQueue(q);
    ch.consume(q, function(msg) {
      if (msg !== null) {
        console.log(msg.content.toString());
        ch.ack(msg);
      }
    });
  }
}

require('amqplib/callback_api')
  .connect('amqp://localhost', function(err, conn) {
    if (err != null) bail(err);
    consumer(conn);
    publisher(conn);
  });

Promise API example

var q = 'tasks';

var open = require('amqplib').connect('amqp://localhost');

// Publisher
open.then(function(conn) {
  return conn.createChannel();
}).then(function(ch) {
  return ch.assertQueue(q).then(function(ok) {
    return ch.sendToQueue(q, Buffer.from('something to do'));
  });
}).catch(console.warn);

// Consumer
open.then(function(conn) {
  return conn.createChannel();
}).then(function(ch) {
  return ch.assertQueue(q).then(function(ok) {
    return ch.consume(q, function(msg) {
      if (msg !== null) {
        console.log(msg.content.toString());
        ch.ack(msg);
      }
    });
  });
}).catch(console.warn);

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 0.8 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
alerts-controller@natlibfi/melinda-record-link-migration-commonspromise-rabbitmq-rpc@iopanda/txroutersufferfest-apismiledataguard-mqmanagerpartier-queuehistory-servicequeueballre-amqp-connection-managerrabbitmq-amqpspark-messengerrt3egg-data-sync@aax/loggeregg-amqplib-provocovo-ascoltatoriamqp-testing-josueinx-server@meowwolf/node-red-contrib-mw-amqpnode-red-contrib-mw-amqponewallet.library.rabbitsunguracrmv-consumerquertmblazeamqplib-reconnect-wrapperbets-notifications@thealmondtree/rabbitmq@sensorbucket/source-worker-ttn@aycd/autosolve-clientexpress-sequalizeamqlib-connection-managerservicegithub@lasmala/amqplib-connection-managertether-agent@d19n/client@d19n/schema-managerlf-node-commonapge-workflow@nestwealth/message-brokerpygmy-rabbit@jloaiza07/event-managernode-red-contrib-rabbitmq-bus-ac@donsky/node-gateway@donsky/node-service@swarthy/wait-for-rabbitapi-enveveapi-eventbus@nhatnm16100/msx-nestjs@community-fibre/clientevaluation-engineegg-starnet-rabbitmqmq-wrapperusagiemilton@cyberproof/nestjs-rabbitmqbentley-admin-servicebentley-products-servicegeofencesyxapimodulevms-recording-server-node@ccmos/nestjs-amqpbenefide0.0.0-jun.0node_contrastotozotoz-amqp@noma/plugin-amqpton-simple-amqp-workeraeonyxtd.coreplugjs-registry@devticon/nestjs-microservices-rabbitmq@egalteam/egalservice-mailingn8n-nodes-base-ziwo@softwrapco/t3afy-commonpie1@inrange/amqp-message-bus-temp@dotedu/devops-cliisa-synct@fof-nestjs/core@nebulario/linker-graph-common@pastash/pastash@pastash/input_amqpstc-imgcompare-workerstdout-mq@devmastery/pubsubstopllc_oraclestock-learning-rabbitmq@dionisnote/amqp-queue-pull-jsrabbit-task@thecolvinco/nodejs-amqplib@aviadh2020/rmq-loggerstellar-integrationv1.rabbitbinder@pager/jackrabbitmnm-jackrabbit@ostdotcom/notification
0.8.0

4 months ago

0.7.1

7 months ago

0.7.0

7 months ago

0.6.0

1 year ago

0.5.6

1 year ago

0.5.5

2 years ago

0.5.4

2 years ago

0.5.3

3 years ago

0.5.2

4 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.2

5 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.2

6 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago