lepus
v0.1.4
Published
Convenience wrapper around amqplib.
Downloads
6
Maintainers
Readme
lepus
Convenience wrapper around amqplib.
NOTE: This is absolutely not a complete or really working solution, I'm just implementing bits and bobs as I require them. Feel free to contribute.
Features
- Connect to RabbitMQ & maintain a connection
- Retry to connect in case the connection fails or drops
- Publish a message
- Subscribe to a message
Install
$ npm install lepus --save
Usage
Basic Usage
const Lepus = require('lepus');
(async () => {
let lepus = new Lepus();
await lepus.connect();
// Publish a message
let publishOpts = {
exchange: {
type: 'topic',
name: 'test'
},
key: 'test-key',
payload: {
foo: 'bar',
bar: 'baz',
date: new Date()
},
options: {}
};
await lepus.publishMessage(publishOpts);
// Subscribe to messages
let subscribeOpts = {
exchange: {
type: 'topic',
name: 'test'
},
key: 'test-key',
queue: {
name: 'test-key-queue'
}
};
await lepus.subscribeMessage(subscribeOpts, async (msgContent, msgRaw) => {
console.log('Hurray, we have received a message!');
console.log('=> msgContent', msgContent);
console.log('=> msgRaw', msgRaw);
});
// In case we want to disconnect ...
// await lepus.disconnect();
})();
API
See API docs
Examples
- Connect to RabbitMQ: ./examples/connection.js
- Handle connection failure: ./examples/connection-failure.js
- Publish a message: ./examples/publishMessage.js
- Subscribe to a queue: ./examples/subscribeMessage.js
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue. The process for contributing is outlined below:
- Create a fork of the project
- Work on whatever bug or feature you wish
- Create a pull request (PR)
I cannot guarantee that I will merge all PRs but I will evaluate them all.
Run tests
Unit tests:
$ npm run test:unit
Integration tests:
First start RabbitMQ locally:
$ docker-compose up -d
Then run the integration tests:
$ npm run test:unit
Updating docs
$ make gen-readme
References
Here are links & libraries that helped me:
- https://guidesmiths.github.io/rascal/
- https://github.com/lanetix/node-lanetix-amqp-easy
- https://github.com/nowait/amqp
- https://github.com/dial-once/node-bunnymq
Some inspirations for the topology functionality:
- https://github.com/LeanKit-Labs/rabbit-topology
AMQP Connection Mgmt:
- https://www.npmjs.com/package/amqp-connection-manager
About
Author
Stefan Walther
License
MIT
This file was generated by verb-generate-readme, v0.6.0, on March 30, 2018.