AMQP警告:检测到可能的EventEmitter内存泄漏。 添加了11位听众。

我收到Node.js中的以下错误,我相信它与AMQP有关。

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace at Connection.EventEmitter.addListener (events.js:160:15) at Connection.EventEmitter.once (events.js:179:8) at Connection.connect (/var/www/project/app/node_modules/amqp/amqp.js:1084:8) at Connection.reconnect (/var/www/project/app/node_modules/amqp/amqp.js:1049:8) at null._onTimeout (/var/www/project/app/node_modules/amqp/amqp.js:886:16) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

任何人都可以指出问题可能是什么?

下面是我用来连接模块的代码:

 JackRabbit.prototype.subscribe = function subscribe(recievedCB, routingKey) { var self = this; var route = routingKey || '#'; self.createConnection(function(rabbitMq, ex, q) { // Catch all messages q.bind(self.config.exchangeName, route); // Receive messages q.subscribe(self.config.messageOptions, function(msg, headers, deliveryInfo) { recievedCB(q, msg, headers, deliveryInfo); // Clsoe connection //rabbitMq.end(); }); }); } 

这就是我所说的方法:

 var scrapRequestRecieved = function(q, msg, headers, deliveryInfo) { console.log("SC msg: %j", msg); /** Callback function shifts the completed job from the queue. */ phantom.scrapeUrls(msg.urls, function() { console.log("SC DONE"); q.shift(); }); }; rabbit.subscribe(scrapRequestRecieved, "sc.#"); 

经过一番search之后,看起来问题是由AMPQ的旧连接逻辑引起的。 每次尝试重新连接时,都会添加一个新的监听器,而不会删除旧监听器。 这个问题已经被解决,

最后一个版本0.1.8包含了@hexacyanide提出的pull请求。