0

私は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()

python バージョンは、javascript と比較して非常に高速に実行されます。JavaScript バージョンは、2 分ごとに 1 つのメッセージを処理するようです。そしてpythonはミリ秒単位で処理するようです。ここで何が起こっているのか本当に驚いています。これは私が実行した正確なコードであり、私のキューには私が確認したメッセージがたくさんあります。javascript のバージョンが本当に遅い理由はありますか?

4

1 に答える 1

1

メッセージを処理したことを NSQ に伝えていません。

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

ここを参照してください。

TruePython ドライバーは、ハンドラーの戻り値 (終了、False再キューイング)に基づいて暗黙的にこれを行うと思います。

于 2016-09-07T11:18:04.250 に答える