Simple framework to handle request response pattern on nsq.io
To install nsq-rocket, simply use npm:
npm install nsq-rocket --save
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()
})
Creates a new instance of Rocket.
Options are:
serviceId
loggerLevel
['silent', 'info', 'warn', 'error', 'fatal']reader
(nsqjs reader)writer
(nsqjs writer)
Change the current topic
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
Publish a new message to NSQ
pattern
, publish with a specific patterncb
, if you want listen for reply
Set a default cb for the current topic
- discard -> message
- error -> error
- connected -> {host: host, port: port}
- closed -> {host: host, port: port}
- replier_error -> error
- ready
- closed
- error -> error