Redis-backed background worker example using OptimalBits/bull and throng.
$ brew install redis
$ brew services start redis
npm install
npm start
- http://localhost:5000
$ git clone git@github.com:heroku-examples/node-workers-example.git
$ cd node-workers-example
$ heroku create
$ heroku addons:create heroku-redis
$ git push heroku main
$ heroku ps:scale worker=1
$ heroku open
The application is comprised of two process:
web
- An Express server that serves the frontend assets, accepts new background jobs, and reports on the status us existing jobsworker
- A small node process that listens for and executes incoming jobs
Because these are separate processes, they can be scaled independently based on specific application needs. Read the Process Model article for a more in-depth understanding of Heroku’s process model.
The web
process serves the index.html
and client.js
files which implement a simplified example of a frontend interface that kicks off new jobs and checks in on them.