Orion
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 brokers, 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
- Broker: provides an interface to a message broker for async pub/sub communication
- 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
- Brokers: NATS
- Transports: NATS (default), HTTP, WebSocket
- 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.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