easy-amqp

fluent wrapper around amqp

npm install easy-amqp
1 downloads in the last day
12 downloads in the last week
40 downloads in the last month

easy-amqp

Implements a wrapper around the node.js amqp module to provide more fluent and easy to use RabbitMQ support

Usage

Install via NPM

$ npm install easy-amqp

Overview

In amqp the example given to subscribe to a queue on the default topic exchange is:

var amqp = require('amqp');
var connection = amqp.createConnection({ host: 'dev.rabbitmq.com' });

// Wait for connection to become established.
connection.on('ready', function () {
  // Use the default 'amq.topic' exchange
  connection.queue('my-queue', function(q){
      // Catch all messages
      q.bind('#');

      // Receive messages
      q.subscribe(function (message) {
        // Print messages to stdout
        console.log(message);
      });
  });
});

With easy-amq, the same code can be written as:

require('easy-amqp')
  .createConnection('amqp://dev.rabbitmq.com:5672')
  .queue('my-queue')
  .bind('#')
  .subscribe(function(message) {
    console.log(message);
  });

Connection

To create a connection use the createConnection method on the module similar to amqp

var easyamqp = require('easy-amqp');

// Connections using an amqp URI are supported
easyamqp.createConnection("amqp://localhost:5672");

// Connections using options and implOptions like the amqp driver are supported
easyamqp.createConnection({ host: 'localhost', port: 5672, login: 'guest', password: 'guest', vhost: '/' }, { defaultExchangeName: "amq.topic" })

Exchange

Create one or more exchanges on the connection object

conn
  .exchange('my-exchange')
  .exchange('another-exchange', { type : 'fanout', durable : true }) // options from the amqp driver are supported
  // You must call publish or subscribe after this for the exchange(s) to be created

Queue

Create one or more queues on the connection object

conn
  .queue('my-queue')
  .queue('another-queue', { durable : true }); // options from the amqp driver are supported
  // You must call subscribe after this for the queue(s) to be created

Binding

Calling bind will create a binding from the last referenced queue or exchange

conn
  .queue('my-queue')
  .bind('my-exchange', '#'); // Create binding from my-queue to my-exchange
  // You must call subscribe after this for the bindings to be created

Subscribe

Calling this method will subscribe to the last referenced queue

conn
  .queue('my-queue')
  .bind('my-exchange', '#')
  .subscribe(function(message, headers, deliveryInfo, rawMessage, queue) {
    console.log(message)
  });

Publish

Calling this method will publish a message to the last referenced exchange

conn
  .exchange('my-exchange')
  .publish('routing-key', 'message')

Tests

To run the tests use

$ make test
npm loves you