nsq-rocket
v1.0.0
Published
Simple framework to handle request response pattern on nsq.io
Downloads
4
Readme
NSQ Rocket :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()
- instance.topic()
- instance.landing()
- instance.launch()
- instance.default()
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 patternpattern
, 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 patterncb
, if you want listen for reply
instance.default(cb)
Set a default cb for the current topic
Events
- reader
- writer
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