与 Pynsq 相比,Nsqjs 真的慢吗?
Posted
技术标签:
【中文标题】与 Pynsq 相比,Nsqjs 真的慢吗?【英文标题】:Is Nsqjs really slow compared to Pynsq? 【发布时间】:2017-01-15 00:53:26 【问题描述】:我在 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】:你没有告诉 NSQ 你处理了这条消息:
reader.on('message', function (msg)
console.log('Received message [%s]: %s', msg.id, msg.body.toString());
msg.finish(); // <---
);
见here。
我认为 Python 驱动程序会根据处理程序的返回值隐式执行此操作(True
是完成,False
是重新排队)。
【讨论】:
以上是关于与 Pynsq 相比,Nsqjs 真的慢吗?的主要内容,如果未能解决你的问题,请参考以下文章