Package Exports
- mqemitter
- mqemitter/abstractTest
- mqemitter/abstractTest.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mqemitter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
mqemitter 
An Opinionated Message Queue with an emitter-style API, but with callbacks.
If you need a multi process MQEmitter, check out the table below:
| mqemitter redis |
|---|
| mqemitter mongodb |
| mqemitter child process |
| mqemitter client server |
| mqemitter aerospike |
Installation
$ npm install mqemitter --save
Basic Example
var mq = require('mqemitter')
var emitter = mq({ concurrency: 5 })
var message
emitter.on('hello world', function (message, cb) {
// call callback when you are done
// do not pass any errors, the emitter cannot handle it.
cb()
})
// topic is mandatory
message = { topic: 'hello world', payload: 'or any other fields' }
emitter.emit(message, function () {
// emitter will never return an error
})API
MQEmitter(opts)
MQEmitter is the class and function exposed by this module.
It can be created by MQEmitter() or using new MQEmitter().
An MQEmitter accepts the following options:
concurrency: the maximum number of concurrent messages that can be on concurrent delivery.wildcardOne: the char that will match one level wildcards.wildcardSome: that char that will match multiple level wildcards.separator: the separator for the different levels.
For more information on wildcards, see this explanation or Qlobber.
emitter.emit(message, callback())
Emit the given message, which must have a topic property, which can contain wildcards
as defined on creation.
emitter.on(topic, callback(message, done), [onDone(err)])
Add the given callback to the passed topic. Topic can contain wildcards,
as defined on creation.
The callback, accept two parameters, the passed message and a done
callback.
The callback must never error and done must not be called with an
err object.
onDone will be called when the event subscribe is done correctly.
emitter.removeListener(topic, callback(message, done), [removeDone(err)])
The inverse of on.
emitter.close(callback())
Close the given emitter. After, all writes will return an error.
Wildcards
MQEmitter supports the use of wildcards: every topic is splitted
according to separator (default /).
The wildcard character + matches exactly one word:
var mq = require('mqemitter')
, emitter = mq()
emitter.on('hello/+/world', function(message, cb) {
// this will print { topic: 'hello/my/world', 'something': 'more' }
console.log(message)
cb()
})
emitter.on('hello/+', function(message, cb) {
// this will not be called
console.log(message)
cb()
})
emitter.emit({ topic: 'hello/my/world', something: 'more' })The wildcard character # matches zero or more words:
var mq = require('mqemitter')
, emitter = mq()
emitter.on('hello/#', function(message, cb) {
// this will print { topic: 'hello/my/world', 'something': 'more' }
console.log(message)
cb()
})
emitter.on('#', function(message, cb) {
// this will print { topic: 'hello/my/world', 'something': 'more' }
console.log(message)
cb()
})
emitter.on('hello/my/world/#', function(message, cb) {
// this will print { topic: 'hello/my/world', 'something': 'more' }
console.log(message)
cb()
})
emitter.emit({ topic: 'hello/my/world', something: 'more' })Of course, you can mix # and + in the same subscription.
LICENSE
MIT