Use redis store job status, and the data is only used to monitor the job, Use amqp protocol to route/persistant message
- On queue setup, it will subscribe the complete/error/progress queue
- When saving a job, it will be published to "main" queue, and also save to redis with inactive status,
- During the process of the job, redis job status will be updated to active status
- If a job is complete, it will be published to the complete queue, which cause the invoke of on "complete" handler
- After complete handler invoked, the job is done
- If a job failed, it will be published to the error queue, and trigger the on "error" handler
- Error handler will update job status on redis
- Progress will be both saved to redis and published to progress queue, the on "progress" handler will be triggered then.
- Light weight mode can be specified for a job by provide {lightweight: true} as third parameter when creating a job. In this mode, the job does not report any status to redis or queue, which means it is not monitorable.