1.5.3 • Published 8 years ago

wabbit v1.5.3

Weekly downloads
3
License
ISC
Repository
github
Last release
8 years ago

Wabbit

Simplify working with RabbitMQ - built on top of Rabbot

Dependencies

Usage

  1. npm install --save wabbit
  2. Use this on the server only!

Configuration

Configure Wabbit with the config vars that you would pass to Rabbot when configuring that service. see Rabbot README for config options

const Wabbit = require('wabbit')
// Wabbit.nackOnError()
// Wabbit.debug = true

Wabbit.rejectUnhandled() // only if a dead-letter exchange is defined
Wabbit.rejectOnError = true // only if a dead-letter exchange is defined
Wabbit.replyWithBody = true
Wabbit.configure(config)
  .then(()=>{ Wabbit.run() })

Properties

debug (boolean) This option, when true, will console.log a bunch of information as Wabbit is carrying out its operations.

rejectOnError (boolean) This option, when true, will reject a message if there is an error. This should only be used when there is a dead-letter exchange defined.

replyWithBody (boolean) This option, when true, will send back the reply.body instead of the full reply object from Wabbit.request.

Methods (server)

You can set up your message handlers like this:

const Wabbit = require('wabbit'),
  ex = new Wabbit.Exchange('data-source-ex.1'),
  readQueue = new Wabbit.Queue({
    name: 'read-queue.1',
    keys: 'read-from-data-source'
  })
  
readQueue.registerHandler({
  key: 'read-from-data-source',
  handler(msg, ack){
    // ...
    // do something with the msg.body as per Wascally docs
    //
    
    if( some_error_condition ){
      msg.reject()
      // or
      msg.nack()
    }
    
    // ack this message from the queue and send back a reply if
    // this message was sent with Wabbit.request (no reply if sent with Wabbit.publish)
    ack('this message has been handled!')
  })
})

ex.registerQueue(readQueue)

Then you send messages to it like this:

Wabbit.request('read-from-data-source', {some: 'data'})
  .then((response)=>{
    // NOTE:
    // if Wabbit.replyWithBody = true =>
    // the "response" you are getting here is actually the "reply.body"
    // of the reply from your consumer.  the original reply has already
    // been ack'd at this point, and the body sent back to this promise
  
    console.log(response)
    // => "this message has been handled!"
  })

... or, if you do not need to know when the action has been completed...

Wabbit.publish('read-from-data-source', {more: 'data'})

Reading

1.5.3

8 years ago

1.5.2

8 years ago

1.5.1

8 years ago

1.5.0

8 years ago

1.4.0

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.1

8 years ago

1.1.5

8 years ago

1.1.4

8 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.0

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago