NATS Microservice Library
Tiny microservice library based on NATS
and compatible with nats-go microservices
Description
This is a typescript-first library that provides a convinient (in 10 lines of code or less!) way to write microservises with out of the box auto discovery, observability and load balancing.
Full interoperability with to-be-released nastcli v0.0.36
that adds nats micro info
, nats micro stats
and nats micro ping
commands
Limitations / TODO
- No multi-reply support yet. When you send a message you will be getting exactly one response (or a timeout error)
- No microservice and endpoint name validation
- (WIP) Zod library is used for method arguments and result typing. However:
- No actual validation is implemented yet.
- No microservice interface discovery is specified in the current version of
nats micro
protocol thus method interface cannot be discovered over NATS yet.
Usage
It is extremely simple:
const broker = await new Broker('echo' + process.pid).connect();
await Microservice.create(
broker,
{
name: 'echo-service',
description: 'Simple echo microservice',
version: '0.0.1',
methods: {
echo: {
handler: (text) => text,
},
'config-change-event': {
handler: console.log,
subject: '$EVT.config.change',
},
},
}
);