Introduction
Picom(pico-message) is a high performance, self-discovery(nats.io), micro services communication layer.
Inner workings
Picom uses (nats.io) to send messages between services.
Each service has a name, and exposed methods.
Services sharing the same name, are expected to expose the same methods and be the same, because they will be load balanced.
Each message is a JSON, and it's expected to be relatively small (a few kb's).
Quick start
npm install picom
Then, on device 1:
var Picom = ;var service1 = 'service1';service1;
On device 2:
var Picom = ;var service2 = 'service2';service2; myServicecatch { // err is instance of Error with message: 'something went wrong' console;};
API
Picom('serviceName', [options])
Initialize a new picom service.
Parameters:
- servers ([String], default: ['127.0.0.1:4222']): Nats.io address
- ttl (Integer, default: 30): After how many seconds of no response the server is considered "failing"
- retries (Integer, default: 3): How many times try reconnect (to different hosts)
- port (Integer, default: random): Used to specify a port, if omitted, a random port will be chosen
picom.expose(methods)
Expose methods and start listening.
Usage
myService;
picom.request(service, [msg], [options])
Send request to remote service
Parameters:
- service (String, mandatory): Service name + method name, like 'serviceName.methodName'
- msg (Object, optional): Will become msg in remote service
- options (Object, options): for now, you can only define request timeout
Usage
// Service 1const Picom = ;const service1 = 'service1';service1;
// Service 2const Picom = ;const service2 = 'service2';service2;
picom.publish(service, [msg])
Send request to remote service, without waiting for a reply
Parameters:
- service (String, mandatory): Service name + method name, like 'serviceName.methodName'
- msg (Object, optional): Will become msg in remote service
Usage
const Picom = ;const service1 = 'service1'; service1;
const Picom = ;const service2 = 'service2'; service2;
picom.close()
Inform nats.io to not send anymore requests here, and disconnect.