node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


Fluent Interface for dealing with AMQP on NodeJS Build Status

AMQP-DSL is a fluent interface wrapper for node-amqp and help you write AMQP binding code in a clean and efficient way.


$ npm install amqp-dsl

Usage overview

Simple connection (more details: docs/example-connection)

amqp = require 'amqp-dsl'
  login: 'user'
  password: 'password'
  host: 'localhost'
).connect((err, amqp) ->
  if err
    throw err
  console.log 'We are connected !'

Simple example (more details: docs/example-simple)

AmqpDsl = require 'amqp-dsl'
  login: 'legen'
  password: 'dary'
.on( 'close'() -> console.error "RabbitMQ connection closed" )
.on( 'error'(err) -> console.error "RabbitMQ error"err )
.on( 'ready'() -> console.log "Connected to RabbitMQ" )
.queue( 'testQueue'(queue) -> console.log "Connected to Queue" )
  .bind( 'stream''#' )
  .bind( 'stream2''routing.key' )
  .subscribe( (message, header, deliveryInfo) -> )
.queue( 'queue2' )
  .bind( 'search''#.ok' )
.queue( 'queue3'passive:true )
.connect( (err, amqp) ->
  if err
    throw err
  # Do other stuff with `amqp` like subscribing to a queue 
  queue3 = amqp.queues.queue3
  queue3.subscribe( ack:true( message, header, deliveryInfo ) ->
    console.log "Hey ! We got one new message !"

See examples/ and docs/ for more information.



  • login( options = {} )


  • on( event, listener )


  • .exchange( name, options )
  • .exchange( name, callback(exchange) )
  • .exchange( name, options, callback(exchange) )


  • .queue( name, options )
  • .queue( name, callback(queue) )
  • .queue( name, options, callback(queue) )


  • .subscribe( callback(message, header, deliveryInfo) )
  • .subscribe( options, callback(message, header, deliveryInfo) )


  • .bind( name, routingKey )


  • .connect()
  • .connect( callback(err, amqp) )
  • .connect( amqp, callback(err, amqp) )

The amqp argument is simply hashtable with the following properties:

  • queues (hashtable of AMQP::queues)
  • exchanges (hashtable of AMQP::Exchange)
  • connection (AMQP::Connection)


Build documentation

$ cake doc

... and browse docs/


$ npm test

Release History

v2.0.0 - Updated node-amqp to 0.2.0 and async to 0.9.0 v1.0.3 - Support for .connect() v1.0.2 - Critical bug fix v1.0.1 - .bind & .subscribe can now be called multiple times. This is the behavior that should have been in place since the beginning.


Donate Bitcoins


Copyright (c) 2014 Francois-Guillaume Ribreau Licensed under the MIT license.