Skip to content

Convenience wrapper around amqplib.

License

Notifications You must be signed in to change notification settings

stefanwalther/lepus

Repository files navigation

lepus

Convenience wrapper around amqplib.

CircleCI codecov


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

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue. 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:

$ 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:

Some inspirations for the topology functionality:

AMQP Connection Mgmt:

About

Author

Stefan Walther

License

MIT


This file was generated by verb-generate-readme, v0.6.0, on March 30, 2018.