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.
- Connect to RabbitMQ & maintain a connection
- Retry to connect in case the connection fails or drops
- Publish a message
- Subscribe to a message
$ npm install lepus --save
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();
})();
See API docs
- 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
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.
$ npm run test:unit
First start RabbitMQ locally:
$ docker-compose up -d
Then run the integration tests:
$ npm run test:unit
$ make gen-readme
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:
AMQP Connection Mgmt:
Stefan Walther
MIT
This file was generated by verb-generate-readme, v0.6.0, on March 30, 2018.