RabbitMQ 서버에서 node.js amqp-node 클라이언트를 실행 중입니다. 두 가지 방법으로 간단한 게시/소비 테스트를 설정했습니다. 각각 다른 지연 시간이 생겨서 왜 작동하지 못합니다. 대기 시간은 메시지가 전송 된 시간부터 배달 된 시간까지 측정됩니다.생산자와 소비자 사이의 RabbitMQ 메시지 대기 시간
첫 번째 방법은 퍼블리싱 앱과 소모 앱의 두 가지 프로세스를 사용합니다. 약 4ms의 레이턴시를 생성합니다. 두 번째 방법은 하나의 앱만 사용하여 제작하고 소비합니다. 이로 인해 약 40ms의 대기 시간이 발생합니다. 아무도 왜이 행동을 나에게 설명 할 수 있습니까? 시간 내 주셔서 감사합니다.
방법 # 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);
}