与Pynsq相比,Nsqjs真的很慢吗?

时间:2016-09-07 10:59:04

标签: javascript nsq pynsq

我在javascript中有以下代码

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 个答案:

答案 0 :(得分:1)

你没告诉NSQ你处理了这条消息:

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

请参阅here

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