【发布时间】:2015-01-17 11:07:48
【问题描述】:
我正在使用 RabbitMQ 处理我项目中的一些作业。 目前,如果我发送 5 个工作,可以说
Job1
Job2
Job3
Job4
Job5
所有作业都被交付到队列中,但是如果 Job1 需要 5 秒完成,而 Job2 需要 2 秒完成,则执行顺序变为 喜欢
Job5
Job1 etc.,
我有没有办法让所有这些作业仅在 RabbitMQ 接收器中的前一个作业完成后才执行(执行流程如 Job1、Job2、Job3、Job4、Job5)?
作业执行(根据 Dave 的要求)
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 中使用的代码。作业在
//JOB HERE部分执行。注意:工作中没有使用回调