2016-09-07 92 views
0

我在JavaScript中与Pynsq相比,Nsqjs真的很慢吗?

var nsq = require('nsqjs'); 

var reader = new nsq.Reader('output', 'out', { 
    lookupdHTTPAddresses: '172.32.10.224:4161' 
}); 

reader.connect(); 


reader.on('message', function (msg) { 
    console.log('Received message [%s]: %s', msg.id, msg.body.toString()); 
}); 

下面的代码,这里是在Python中相当于版本。

import nsq 

def handler(message): 
    print str(message.body) 
    return True 

r = nsq.Reader(message_handler=handler, 
     lookupd_http_addresses=['http://172.32.10.224:4161'], 
     topic='output', channel='out') 
nsq.run() 

与JavaScript相比,python版本运行速度非常快。 JavaScript版本似乎每2分钟处理1条消息。而python似乎以毫秒为单位进行处理。我真的很惊讶这里发生了什么?这是我运行的确切代码,我的队列中有很多消息,我已经确认。任何想法为什么JavaScript版本真的很慢?

回答

1

你不告诉NSQ你处理的消息:

reader.on('message', function (msg) { 
    console.log('Received message [%s]: %s', msg.id, msg.body.toString()); 
    msg.finish(); // <--- 
}); 

here

我认为Python驱动程序隐式地基于处理程序的返回值执行此操作(True完成,False为重载)。