multi-process-nodejs-example
multi-process-nodejs-example copied to clipboard
Multi-process Node.js application example
The application consists of 3 processes:
twitter-stream-workersocial-preprocessor-workerweb
Processes
Use the PROCESS_TYPE environment variable to select the process to be run.
$ PROCESS_TYPE=web NODE_ENV=production npm start
Twitter stream worker
The process is listening on twitter for keywords and sends the tweets to a RabbitMQ queue.
Environment variables
NODE_ENV('development' | 'production'): whendevelopment, it uses dotenv, to read the local.envfile, that's the only differenceLOGGER_LEVEL('error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'), default:infoLOGGER_ENABLED('true' | 'false'), default:trueTWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRETTWITTER_ACCESS_TOKEN_KEYTWITTER_ACCESS_TOKEN_SECRETTWITTER_TRACK: comma separated keywords to track, eg.nodejs,node.js,risingstack,microservice,micro-serviceRABBITMQ_URI
Social preprocessor worker
The process is listening on the RabbitMQ queue and saves the tweets to Redis and removes old ones.
Environment variables
NODE_ENV('development' | 'production'): whendevelopment, it uses dotenv, to read the local.envfile, that's the only differenceLOGGER_LEVEL('error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'), default:infoLOGGER_ENABLED('true' | 'false'), default:trueRABBITMQ_URIREDIS_URIREDIS_DATA_RETENTION_IN_MS, default:86400000(1 day)
Web
The process is serving an HTTP API to return the tweets.
GET /api/v1/tweets?limit&offset
Environment variables
NODE_ENV('development' | 'production'): whendevelopment, it uses dotenv, to read the local.envfile, that's the only differenceLOGGER_LEVEL('error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'), default:infoLOGGER_ENABLED('true' | 'false'), default:trueREDIS_URIPORT