nsq-rocket

1.0.0 • Public • Published

NSQ Rocket 🚀

Simple framework to handle request response pattern on nsq.io

Install

To install nsq-rocket, simply use npm:

npm install nsq-rocket --save

Example

var Rocket = require('nsq-rocket');
 
var rocket = Rocket({
  serviceId: 'id',
  loggerLevel: 'info',
  writer: {
    //nsqjs writer configuration
    host: '127.0.0.1',
    port: 4150
  },
  reader: {
    //nsqjs reader configuration
    lookupdHTTPAddresses: '127.0.0.1:4161'
  }
});
 
rocket
.topic('sample_topic')
.landing('test_channel', 'key', function(msg, done) {
  console.log(msg.content)
  done(null, 'reply')
})
.landing('test_channel', {pattern: 'object'}, function(msg, done) {
  console.log(msg.content)
  done(null, 'reply')
})
//Default cb for this topic if no key found
.default(function(msg, done) {
  console.log(msg.content)
  done(null, 'reply')
})
.topic('change_topic')
//No key landing
.landing('test_channel', function(msg, done) {
  console.log(msg.content)
  done(null, 'reply')
});
 
rocket
.topic('sample_topic')
.launch('message', 'key', function(err, res) {
  if (err) throw new Error(err)
  console.log(res.content)
  res.finish()
})
.launch('message', {pattern: 'object'}, function(err, res) {
  if (err) throw new Error(err)
  console.log(res.content)
  res.finish()
})
//No Routing Key
.launch('message', function(err, res) {
  if (err) throw new Error(err)
  console.log(res.content)
  res.finish()
})

API


Rocket([opts])

Creates a new instance of Rocket.

Options are:

  • serviceId
  • loggerLevel ['silent', 'info', 'warn', 'error', 'fatal']
  • reader (nsqjs reader)
  • writer (nsqjs writer)

instance.topic(topic)

Change the current topic


instance.landing([channel, pattern, cb])

Set a new listener for NSQ

  • channel, you can put your cb here if you want a random channel and no pattern
  • pattern, you can put your cb here if you want no pattern

instance.launch(message,[pattern, cb])

Publish a new message to NSQ

  • pattern, publish with a specific pattern
  • cb, if you want listen for reply

instance.default(cb)

Set a default cb for the current topic

Events


instance.reader.on(event, data)

  • discard -> message
  • error -> error
  • connected -> {host: host, port: port}
  • closed -> {host: host, port: port}
  • replier_error -> error

instance.writer.on(event, data)

  • ready
  • closed
  • error -> error

Package Sidebar

Install

npm i nsq-rocket

Weekly Downloads

0

Version

1.0.0

License

MIT

Last publish

Collaborators

  • daack