@betit/orion

v0.1.32
Pluggable microservice framework

Orion

Build Status Coverage Status NPM Version

Orion is a pluggable framework for microservices.

Following "batteries included but removable" design philosophy. Providing sane default implementations, but everything is swappable. Comes with built in support for various transports and codecs.

Features

  • Async communication: event driven architecture (pub/sub)
  • Sync communication: request-response transport layer
  • RPC: clean and simple interface to build services

Components

  • Transport: provides an interface for sync request/response communication
  • Codec: used for encoding and decoding messages before transporting across the wire
  • Service: provides an interface to name your service and register request handlers
  • Client: provides an interface to make requests to services

Built-in components

  • Transports: NATS (default)
  • Codecs: JSON (default), MessagePack

Example

Service:

const orion = require('@betit/orion');

const service = new orion.Service('calc');

service.handle('add', (req, reply) => {
  reply(null, parseInt(req.params.a) + parseInt(req.params.b));
});

service.listen(() => {
  console.log(`Service started: ${service}`);
});

Client:

const orion = require('@betit/orion');

const client = new orion.Client({ service: 'calc' });

client.call('add', { a: 3, b: 2 }, (err, res) => {
  console.log(err, res);
  client.close();
});

Check out the examples folder for more examples.

Development

$ docker run -p 4222:4222 -p 8222:8222 -d nats
$ npm install
$ npm test

License

MIT

npm i @betit/[email protected]

Metadata

  • MIT
  • Whatever
  • Unknown
  • released 11/30/2017

Downloads