Javascript 如何在NodeJS中逐个使用RabbitMQ中的消息?
默认情况下,consume()函数将使用队列中的所有消息,但我只需要从队列中弹出一条消息,在下一次consume()调用时,从队列中弹出第二条消息,依此类推。我有以下代码: rabbit.js(在这个文件中,我实现了发送到队列和从队列接收): rabbit_test.js(在这个文件中,我测试了前面代码的功能): 当我调用Javascript 如何在NodeJS中逐个使用RabbitMQ中的消息?,javascript,node.js,rabbitmq,Javascript,Node.js,Rabbitmq,默认情况下,consume()函数将使用队列中的所有消息,但我只需要从队列中弹出一条消息,在下一次consume()调用时,从队列中弹出第二条消息,依此类推。我有以下代码: rabbit.js(在这个文件中,我实现了发送到队列和从队列接收): rabbit_test.js(在这个文件中,我测试了前面代码的功能): 当我调用queueReceive()函数时,它也会输出“01C”和“02C”消息,而不仅仅是“01C”。我只需要打印出“01C”,然后使用下一个queueReceive()调用“02C
queueReceive()
函数时,它也会输出“01C”和“02C”消息,而不仅仅是“01C”。我只需要打印出“01C”,然后使用下一个queueReceive()
调用“02C”
注意:我也在rabbit.js中为函数queueReceive()
尝试了这段代码:
我添加了ch.ack(msg)
和ch.prefetch(1)
部分,但它们都不起作用
我怎样才能让它工作?谢谢大家!
var amqp = require('amqplib/callback_api');
var ch;
amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, channel) {
ch = channel;
});
});
module.exports.queueSend = function(msg) {
var q = 'hello';
ch.assertQueue(q, {durable: false});
ch.sendToQueue(q, new Buffer(msg));
console.log(" [x] Sent %s", msg);
}
module.exports.queueReceive = function() {
var q = 'hello';
ch.assertQueue(q, {durable: false});
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
ch.consume(q, function(msg) {
console.log(" [x] Received %s", msg.content.toString());
}, {noAck: false});
}
var rabbit = require("./rabbit");
setTimeout(function() {
rabbit.queueSend("01C");
rabbit.queueSend("02C");
rabbit.queueReceive();
}, 2000);
module.exports.queueReceive = function() {
var q = 'hello';
ch.prefetch(1);
ch.assertQueue(q, {durable: false});
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
ch.consume(q, function(msg) {
ch.ack(msg);
console.log(" [x] Received %s", msg.content.toString());
}, {noAck: false});
}