+ })
+
+ worker.on('error', err => { logger.error('Error in job worker %s.', handlerName, { err }) })
+
+ this.workers[handlerName] = worker
+ }
+
+ private buildQueue (handlerName: JobType) {
+ const queueOptions: QueueOptions = {
+ connection: Redis.getRedisClientOptions('Queue'),
+ prefix: this.jobRedisPrefix
+ }
+
+ const queue = new Queue(handlerName, queueOptions)
+ queue.on('error', err => { logger.error('Error in job queue %s.', handlerName, { err }) })
+
+ this.queues[handlerName] = queue
+ }
+
+ private buildQueueScheduler (handlerName: JobType) {
+ const queueSchedulerOptions: QueueSchedulerOptions = {
+ autorun: false,
+ connection: Redis.getRedisClientOptions('QueueScheduler'),
+ prefix: this.jobRedisPrefix,
+ maxStalledCount: 10
+ }
+
+ const queueScheduler = new QueueScheduler(handlerName, queueSchedulerOptions)
+ queueScheduler.on('error', err => { logger.error('Error in job queue scheduler %s.', handlerName, { err }) })
+
+ this.queueSchedulers[handlerName] = queueScheduler
+ }
+
+ private buildQueueEvent (handlerName: JobType) {
+ const queueEventsOptions: QueueEventsOptions = {
+ autorun: false,
+ connection: Redis.getRedisClientOptions('QueueEvent'),
+ prefix: this.jobRedisPrefix