JSPM

microlauncher

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 11
  • Score
    100M100P100Q47553F
  • License MIT

Launching microservices by process spawning or pm2

Package Exports

  • microlauncher

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (microlauncher) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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 ...