2016-09-07 96 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爲重載)。