UNPKG

amqp-dsl

Version:

Amqp-DSL - Fluent interface for node-amqp

131 lines (85 loc) 2.9 kB
## Fluent Interface for dealing with AMQP on NodeJS [![Build Status](https://secure.travis-ci.org/FGRibreau/node-amqp-dsl.png)](http://travis-ci.org/FGRibreau/node-amqp-dsl) ## AMQP-DSL is a [fluent interface](http://en.wikipedia.org/wiki/Fluent_interface) wrapper for [node-amqp](https://github.com/postwait/node-amqp) and help you write AMQP binding code in a clean and efficient way. ## Installation $ npm install amqp-dsl ## Usage overview ### Simple connection (more details: `docs/example-connection`) ```coffeescript amqp = require 'amqp-dsl' amqp.login( login: 'user' password: 'password' host: 'localhost' ).connect((err, amqp) -> if err throw err return console.log 'We are connected !' ) ``` ### Simple example (more details: `docs/example-simple`) ```coffeescript AmqpDsl = require 'amqp-dsl' AmqpDsl.login( 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", queue.name ) .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 return # 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 !" queue3.shift() ) ) ``` See `examples/` and `docs/` for more information. ## API ### .login * `login( options = {} )` ### .on * `on( event, listener )` ### .exchange * `.exchange( name, options )` * `.exchange( name, callback(exchange) )` * `.exchange( name, options, callback(exchange) )` ### .queue * `.queue( name, options )` * `.queue( name, callback(queue) )` * `.queue( name, options, callback(queue) )` ### .queue(...).subscribe * `.subscribe( callback(message, header, deliveryInfo) )` * `.subscribe( options, callback(message, header, deliveryInfo) )` ### .queue(...).bind * `.bind( name, routingKey )` ### .connect * `.connect( amqp, callback(err, amqp) )` * `.connect( 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`) ## Documentation ### Build documentation $ cake doc ... and browse `docs/` ## Test $ npm test ## Release History v1.0.1 - .bind & .subscribe can now be called multiple times. This is the behavior that should have been in place since the beginning. ## License Copyright (c) 2013 Francois-Guillaume Ribreau Licensed under the MIT license.