RabbitMQ错误(节点:7932)MaxListenersExceededWarning

时间:2019-01-22 09:42:54

标签: node.js rabbitmq

我不断收到此错误: 错误(节点:7932)MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏。添加了11个错误侦听器。使用generator.setMaxListeners()增加限制

RabbitMQ连接关闭,然后重试连接。这是初始化兔子MQ连接的代码:

try {
  connection = await amqp.connect(process.env.RABBITQM_CONNECTION_STRING);
} catch (err) {
  logger.error('[AMQP] error connecting %s', err);
  setTimeout(() => { this.init(next); }, 1000);
}

if (connection) {
  connection.on('error', (err) => {
    if (err.message !== 'Connection closing') {
      logger.error('[AMQP] connection error %s', err);
    }
  });

  connection.on('close', () => {
    logger.error('[AMQP] re-connecting');
    return setTimeout(() => { this.init(next); }, 1000);
  });

  logger.info('[AMQP] connected');

  if (_.isFunction(next)) {
    await next();
  }
}

我在想,也许会不断添加connection.on('error'),connection.on('close')处理函数,而无需删除它们。那么有没有办法删除它们?然后,我尝试了(eventName),但似乎没有用。还是我做错了什么?

1 个答案:

答案 0 :(得分:0)