An open API service indexing awesome lists of open source software.

https://github.com/daack/nsq-rocket

Simple framework to handle request response pattern on nsq.io
https://github.com/daack/nsq-rocket

Last synced: about 1 month ago
JSON representation

Simple framework to handle request response pattern on nsq.io

Awesome Lists containing this project

README

          

# NSQ Rocket :rocket:

Simple framework to handle request response pattern on nsq.io

* [Install](#install)
* [Example](#example)
* [API](#api)
* [Events](#events)


## Install

To install nsq-rocket, simply use npm:

```
npm install nsq-rocket --save
```


## Example

```javascript
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 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

* 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