与 Pynsq 相比,Nsqjs 真的很慢吗?
Is Nsqjs really slow compared to 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 版本真的很慢吗?
您没有告诉 NSQ 您处理了邮件:
reader.on('message', function (msg) {
console.log('Received message [%s]: %s', msg.id, msg.body.toString());
msg.finish(); // <---
});
见here。
我认为 Python 驱动程序根据处理程序的 return 值隐式执行此操作(True
完成,False
重新排队)。
我在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 版本真的很慢吗?
您没有告诉 NSQ 您处理了邮件:
reader.on('message', function (msg) {
console.log('Received message [%s]: %s', msg.id, msg.body.toString());
msg.finish(); // <---
});
见here。
我认为 Python 驱动程序根据处理程序的 return 值隐式执行此操作(True
完成,False
重新排队)。