Jackrabbit
RabbitMQ in Node.js without hating life.
Simple Example
producer.js:
var jackrabbit = require('jackrabbit');
var rabbit = jackrabbit(process.env.RABBIT_URL);
rabbit
.default()
.publish('Hello World!', { key: 'hello' })
.on('drain', rabbit.close);
consumer.js:
var jackrabbit = require('jackrabbit');
var rabbit = jackrabbit(process.env.RABBIT_URL);
rabbit
.default()
.queue({ name: 'hello' })
.consume(onMessage, { noAck: true });
function onMessage(data) {
console.log('received:', data);
}
Set arguments in queue
rabbit
.default()
.queue({ name: 'hello', durable: true, arguments: {'x-expires':420000} })
other arguments:
- x-max-length
- x-max-length-bytes
- x-overflow
- x-dead-letter-exchange
- x-dead-letter-routing-key
- x-max-priority
- x-queue-mode
- x-queue-master-locator
- x-message-ttl
Ack/Nack Consumer Example
var jackrabbit = require('jackrabbit');
var rabbit = jackrabbit(process.env.RABBIT_URL);
rabbit
.default()
.queue({ name: 'important_job' })
.consume(function(data, ack, nack, msg) {
// process data...
// and ACK on success
ack();
// or alternatively NACK on failure
// NOTE: this will requeue automatically
nack();
// or, if you want to nack without requeue:
nack({
requeue: false
});
})
Jackrabbit is designed for simplicity and an easy API. If you're an AMQP expert and want more power and flexibility, check out Rabbot.
More Examples
For now, the best usage help is can be found in examples, which map 1-to-1 with the official RabbitMQ tutorials.
Installation
npm install --save jackrabbit
Tests
The tests are set up with Docker + Docker-Compose, so you don't need to install rabbitmq (or even node) to run them:
$ docker-compose run jackrabbit npm test
If using Docker-Machine on OSX:
$ docker-machine start
$ eval "$(docker-machine env default)"
$ docker-compose run jackrabbit npm test
Release
Releases should be tagged according to Semantic Versioning
Process:
- Add release notes to
releases.md
- Commit add push the release notes
git commit releases.md && git push origin master
- Release it
./node_modules/release-it/bin/release-it.js