RisingStack / Multi Process Nodejs Example
Stars: ✭ 486
Programming Languages
javascript
184084 projects - #8 most used programming language
Multi-process Node.js application example
The application consists of 3 processes:
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 difference -
LOGGER_LEVEL('error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'), default:info -
LOGGER_ENABLED('true' | 'false'), default:true TWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRETTWITTER_ACCESS_TOKEN_KEYTWITTER_ACCESS_TOKEN_SECRET-
TWITTER_TRACK: comma separated keywords to track, eg.nodejs,node.js,risingstack,microservice,micro-service RABBITMQ_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 difference -
LOGGER_LEVEL('error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'), default:info -
LOGGER_ENABLED('true' | 'false'), default:true RABBITMQ_URIREDIS_URI-
REDIS_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 difference -
LOGGER_LEVEL('error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'), default:info -
LOGGER_ENABLED('true' | 'false'), default:true REDIS_URIPORT
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].
