amqp-dsl
Version:
Amqp-DSL - Fluent interface for node-amqp
131 lines (85 loc) • 2.9 kB
Markdown
## Fluent Interface for dealing with AMQP on NodeJS [](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.