프로젝트에서 일부 작업을 처리하기 위해 RabbitMQ를 사용하고 있습니다. 내가 5 작업을 보낼 경우 현재는 Rabbit MQ의 직렬 처리 NodeJS
Job1
Job2
Job3
Job4
Job5
모든 작업
가 대기열로 전달받을 말할 수 있지만, 작업 1을 완료하는 데 5 초 정도 걸립니다과 작업 2를 완료하는 데 2 초 걸리는 경우, 실행 순서는 같은 된다Job5
Job1 etc.,
나에게이 모든 작업은 이전이 RabbitMQ 수신기 (작업 1, 작업 2, Job3, Job4, Job5 같은 실행 흐름을) 완료됩니다 후에 만 실행 얻을 수 있도록 그것을 만들 수있는 방법이 있습니까? (데이브의 요청에 따라)
작업 실행
var amqp = require('amqplib');
amqp.connect('amqp://localhost').then(function(conn) {
process.once('SIGINT', function() { conn.close(); });
return conn.createChannel().then(function(ch) {
var ok = ch.assertQueue('hello', {durable: false});
ok = ok.then(function(_qok) {
return ch.consume('hello', function(msg) {
//JOB HERE
}, {noAck: true});
});
return ok.then(function(_consumeOk) {
console.log(' [*] Waiting for messages. To exit press CTRL+C');
});
});
}).then(null, console.warn);
덕분에, 발안
* 어떻게 * 작업을 처리하고 있습니까? –
@DaveNewton 질문에서 Receiver end에 사용 된 코드를 추가했습니다. 작업은 섹션'// JOB HERE'에서 실행됩니다. 참고 : 작업에서 사용 된 콜백이 없습니다 – balanv