Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stefanwalther/lepus
Convenience wrapper around amqplib.
https://github.com/stefanwalther/lepus
amqp amqp-client amqplib broker publisher rabbit rabbitmq subscriber taskqueue
Last synced: about 5 hours ago
JSON representation
Convenience wrapper around amqplib.
- Host: GitHub
- URL: https://github.com/stefanwalther/lepus
- Owner: stefanwalther
- License: other
- Created: 2017-12-01T02:33:46.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-25T15:33:22.000Z (3 months ago)
- Last Synced: 2024-10-30T12:51:23.176Z (7 days ago)
- Topics: amqp, amqp-client, amqplib, broker, publisher, rabbit, rabbitmq, subscriber, taskqueue
- Language: JavaScript
- Size: 161 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.yml
- Contributing: docs/contributing.md
- License: LICENSE.md
Awesome Lists containing this project
README
## lepus
> Convenience wrapper around amqplib.
[![CircleCI](https://img.shields.io/circleci/project/github/stefanwalther/lepus.svg)](https://circleci.com/gh/stefanwalther/lepus)
[![codecov](https://codecov.io/gh/stefanwalther/lepus/branch/master/graph/badge.svg)](https://codecov.io/gh/stefanwalther/lepus)---
__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](./docs/api-docs.md)
### Examples
- Connect to RabbitMQ: [./examples/connection.js](./examples/connection.js)
- Handle connection failure: [./examples/connection-failure.js](./examples/connection-failure.js)
- Publish a message: [./examples/publishMessage.js](./examples/publishMessage.js)
- Subscribe to a queue: [./examples/subscribeMessage.js](./examples/subscribeMessage.js)## Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/stefanwalther/lepus/issues). The process for contributing is outlined below:
1. Create a fork of the project
2. Work on whatever bug or feature you wish
3. Create a pull request (PR)I cannot guarantee that I will merge all PRs but I will evaluate them all.
### Run tests
#### Unit tests:
```bash
$ npm run test:unit
```
#### Integration tests:First start RabbitMQ locally:
```sh
$ docker-compose up -d
```Then run the integration tests:
```bash
$ npm run test:unit
```### Updating docs
```sh
$ 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-bunnymqSome inspirations for the topology functionality:
- https://github.com/LeanKit-Labs/rabbit-topologyAMQP Connection Mgmt:
- https://www.npmjs.com/package/amqp-connection-manager## About
### Author
**Stefan Walther*** [twitter](http://twitter.com/waltherstefan)
* [github.com/stefanwalther](http://github.com/stefanwalther)
* [LinkedIn](https://www.linkedin.com/in/stefanwalther/)### License
MIT***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on March 30, 2018._