kue
kue copied to clipboard
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 job ttl exceeded listeners added. Use emitter.setMaxListeners() to increase limit
I'm getting (node:38) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 job ttl exceeded listeners added. Use emitter.setMaxListeners() to increase limit
my Kue implementation:
const kue = require('kue')
const $raven = require('./Raven')
const $jobs = require('../config/jobs')
const queue = kue.createQueue({
// supress job level events
jobEvents: false,
// config redis connection
redis: {
host: process.env.REDIS_HOST || '127.0.0.1',
port: process.env.REDIS_PORT || 6379
}
})
queue.on('error', function (err) {
console.log('Kue error \n', err)
$raven.captureException(err)
})
// register jobs
Object.keys($jobs).forEach(name => {
queue.process(name, $jobs[name])
})
module.exports = queue
a job declaration example
'supplier-notify-created': async function (job, done) {
try {
console.log('notifying supplier was created...')
let { message } = job.data
await $axios({
method: 'POST',
url: $api.crmSupplierWebhook(),
data: {
message
}
})
console.log('successfully notified supplier was created')
done()
} catch (err) {
console.log('error notifying supplier created', err)
$raven.captureException(err)
done(err)
}
}
job registration
const supplierNotifyUpdated = function (req, res) {
let { message, user, supplierUuid } = req.body
if (!message || !user || !supplierUuid) {
throw new BadRequestError('Missing Parameters')
}
$kue.create('supplier-notify-updated', { message, user, supplierUuid })
.priority('critical')
.attempts(3)
.removeOnComplete(true)
.save()
console.log('created supplier update notification job')
res.json('ok')
}
whole project here: https://github.com/AddToEvent/JobProcessor
Kue version: 0.11.6
I'm using docker images to launch my app
const queue = kue.createQueue({ ... })
queue.setMaxListeners(1000) // <- golden method
queue.on('error', function (err) {
...
Instead of blindly setting Max Listeners to 1000, you can do :
queue.setMaxListeners(queue.getMaxListeners() + 1);
whenever you add a processor to the queue.
If you are using Concurrency, Just add the concurrency value you are using instead of 1.
In your case, you can just do:
queue.setMaxListeners(queue.getMaxListeners() + Object.keys($jobs).length);
before the loop.
Will do!. Thank you
any other way to fix this?
any other way to fix this?
@sibelius Could you provide a code sample with which you are getting this (after increaseing listeners with setMaxListeners
)?