New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

micromessaging

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

micromessaging

Easy-to-use interface for Rabbit MQ


Version published
Maintainers
2
Created

Micromessaging

Build Status

This module has been written for Swanest back-end. It eases the use of messaging between services. We use RabbitMQ as the underlying broker service. This library is using amqplib (0.5.3) as a core dependency but we do use some parameters that are only RabbitMQ related so it might not work with other AMQP 0.9.1 brokers.

Supported version of NodeJS 8+


Installation

yarn add micromessaging npm install micromessaging --save

API

Full API documentation is at: swanest.github.io/micromessaging

Special thanks to TypeDoc that enabled it.

Dependencies

  • RabbitMQ > 3.3.0

Usage

import { Messaging } from 'micromessaging';

// Server
const server = new Messaging('server');
await server.handle('request-name', (message) => {
    // message.body = {how: {are: 'you?'}}
    message.reply({im: 'fine'});
});
await server.connect(); // Connect can be before or after the handlers it doesnt matter.


// Client
const client = new Messaging('client');
await client.connect(); // Connection needs to be established before...
const response = await client.request('server', 'request-name', {how: {are: 'you?'}});
// response = {im: 'fine'}

Notes

v3.0 includes breaking changes and CAN'T be used with another module using an earlier micromessaging version.

About what it does:

  • RPC model (.request / .handle)
  • Event subscription (PUB/SUB) (.emit / .listen)
  • Worker queue tasks (.task / .handle)
  • Election of a master between services that do have the same serviceName (in new Messaging(serviceName[, serviceOptions]))
  • Manage the process quality of service (Qos.ts)
    • The QoS is managed through usage of HeavyEL for event-loop management and the MemoryPressure module to know about memory usage and pressure.
    • What it basically does is to try to keep the process under a certain usage and will stop accepting messages when it reaches a certain threshold to avoid crashes. The reason is that this enables parallelism and it should be properly managed as NodeJS is single threaded.
  • Has knowledge about the status of it's peers (through PeerStatus.ts)

TODO

  • Change the API to expose the strict minimum

FAQs

Package last updated on 23 May 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts