node-bunnymq
Features
- Subscriber (consumer)
- Publisher (producer)
- RPC (get answers from subscriber automatically)
- Auto connect/reconnect/queue messages
- Handle errors / requeing when message callback fails
- Messages types caring using AMQP headers for content type (send as objects and receive as objects)
Installation
bunnymq requires nodejs 6 or harmony flags! because it uses es6 features outside strict mode.
npm install bunnymq
Basic usage
Publisher
Producer (publisher), can send messages to a named queue.
const bunnymq = require('bunnymq')({ host: 'amqp://localhost' });
bunnymq.publish('queue:name', 'Hello World!');
Subscriber
Consumer (subscriber), can handle messages from a named queue.
const bunnymq = require('bunnymq')({ host: 'amqp://localhost' });
bunnymq.subscribe('queue:name', function (msg) {
});
RPC Support
You can create RPC requests easily by adding the rpc: true
option to the produce
call:
bunnymq.subscribe('queue:name', function() {
return 'hello world!';
});
bunnymq.publish('queue:name', { message: 'content' }, { rpc: true, timeout: 1000 })
.then(function(consumerResponse) {
console.log(consumerResponse);
});
The optional timeout
option results in a rejection when no answer has been received after the given amount of milliseconds.
When '0' is given, there will be no timeout for this call.
This value will overwrite the default timeout set in the config in rpcTimeout
.
Routing keys
You can send publish commands with routing keys (thanks to @nekrasoft)
bunnymq.publish('queue:name', { message: 'content' }, { routingKey: 'my-routing-key' });
Config
You can specify a config object, properties and default values are:
const bunnymq = require('bunnymq')({
host: 'amqp://localhost',
prefetch: 5,
requeue: true,
timeout: 1000,
rpcTimeout: 1000,
consumerSuffix: '',
hostname: process.env.HOSTNAME || process.env.USER || uuid.v4(),
transport: utils.emptyLogger
});
You can override any or no of the property above.
Note: if you enable the debug mode using the AMQP_DEBUG=true
env var, but you do not attach any transport logger, the module will fallback to console.
Env vars
Deprecated as of 2.1.0, don't use env vars to configure the module, see Config section.
Documentation & resources
To generate documentation, just run npm run docs
, it will create a docs folder.
You can also find more about RabbitMq in the links below:
Tests
Requirements:
Run make deps
once and then make test
to launch the test suite.
License
The MIT License MIT