1.0.2 • Published 6 years ago

microlauncher v1.0.2

Weekly downloads
19
License
MIT
Repository
github
Last release
6 years ago

microlauncher.js

Node.js Module for lauching microservices. Applicable for application where "main application" should launch and control (later shutdown of) these sub-microservices. Microservices should (at this time):

  • reside on the same server host as "main app"
  • be launchable as standalone excutable presenting separate process)

Benefits of microlauncher and microservices in general

  • Separate process with potential to run on a separate CPU core
  • Separated logging (esp. applicable to PM2)
  • Automatic control of startup and stopping of sub-microservices along with main app server.

Microservice Configuration

Example of embedding microservice config into you applications main config:

 {
   "httpport" : 3000,
   "jsonindent": 2,
   ....
   "submicroservices": [
     {"id": "loginserv", "script": "login.serv.js", "runmode": "pm2"},
     {"id": "DAQ",       "script": "datalogging.serv.js", "runmode": "pm2"},
     {"id": "cronctrl",  "script": "croncontrol.serv.js", "runmode": "pm2", "disa": 1}
   ]
   ...
 }

Using Module API

Within main app server you'd launch sub-microservices by:

 var ml = require("microlauncher");
 // Per previous example on config ...
 var launcher = new ml.MicroLauncher(cfg.microservices, {"runmode": "pm2", "debug": 1});
 // Launch all non-disabled ones
 launcher.runsubservices();
 

See Also ...

PM2 Programmatic API: https://pm2.io/doc/en/runtime/reference/pm2-programmatic/

Troubleshooting microservice starting problems

Problems with Error: listen EADDRINUSE 127.0.0.1:...

  • Port is reserved on the current host
  • Track process that is holding it by (e.g. port 3001): lsof -i tcp:3001
  • Process might will PM2 maintained and get relaunched by PM2 when killed
    • Kill process by pm2 stop ... ; pm2 delete ...