RabbitMQサーバーでnode.jsamqp-nodeクライアントを実行しています。私は2つの異なる方法で単純な公開/消費テストを設定しました-それぞれが異なるレイテンシーを生成し、その理由を理解できません。待ち時間は、メッセージが送信されてから配信されるまでの時間で測定されます。
最初の方法では、2つの別々のプロセスを使用します。1つは公開アプリ用、もう1つは消費アプリ用です。約4msのレイテンシーを生成します。2番目の方法では、1つのアプリのみを使用して作成および消費します。これにより、約40ミリ秒の遅延が発生します。誰かがこの振る舞いを私に説明できますか?お時間をいただきありがとうございます。
方法#1プロデューサー:
var amqp = require('amqp'),
connection = amqp.createConnection({host:'localhost'}),
testExchange = {};
connection.on('ready', function(){
testExchange = connection.exchange('testExchange', {type:'topic', autoDelete:true});
testMessage();
});
function testMessage(){
console.log('message sent');
testExchange.publish('test.message', { msg:'testMessage', time: new Date().getTime() });
setTimeout(testMessage, 500);
}
方法#1消費者
var amqp = require('amqp'),
connection = amqp.createConnection({host:'localhost'}),
connection.on('ready', function(){
var testExchange = connection.exchange('testExchange', {type:'topic', autoDelete:true});
var testQ = connection.queue('testQ', function(queue){
queue.bind('testExchange', 'test.#');
queue.subscribe( function(message){
console.log('message received');
var now = new Date().getTime();
console.log(now-message.time);
});
});
});
方法#2プロデューサーとコンシューマー
var amqp = require('amqp'),
connection = amqp.createConnection({host:'localhost'}),
testExchange = {};
connection.on('ready', function(){
testExchange = connection.exchange('testExchange', {type:'topic', autoDelete:true});
var testQ = connection.queue('testQ', function(queue){
queue.bind('testExchange', 'test.#');
queue.subscribe( function(message){
console.log('message received');
var now = new Date().getTime();
console.log(now-message.time);
});
testMessage();
});
});
function testMessage(){
console.log('message sent');
testExchange.publish('test.message', { msg:'testMessage', time: new Date().getTime() });
setTimeout(testMessage, 500);
}