gpt4 book ai didi

javascript - rabbitmq如何限制消费消息数?

转载 作者:行者123 更新时间:2023-11-30 19:42:57 25 4
gpt4 key购买 nike

我正在使用 rabbitmqamqplib在我的 node 项目中。

我使用队列在服务之间传递作业消息。
其中一个服务使用这些消息,进行一些处理并将结果返回到另一个队列。

有时队列中包含很多消息,而服务会尝试一次性消耗掉所有消息,从而导致进程(服务)崩溃。

如何限制 channel /服务可以处理的消息数量?
我想到了一个自定义解决方案,持有全局限制,但我宁愿将其用作最后的手段......

最佳答案

您的问题并不完全清楚,但您似乎想限制您的服务使用消息的方式,而不是队列保存的消息数量。如果这种理解是正确的,那么您需要的是 prefetch_count。更多文档:https://www.rabbitmq.com/consumer-prefetch.html

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'task_queue';

ch.assertQueue(q, {durable: true});
ch.prefetch(1); // THIS SHOULD SOLVE YOUR PROBLEM
console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
ch.consume(q, function(msg) {
var secs = msg.content.toString().split('.').length - 1;

console.log(" [x] Received %s", msg.content.toString());
setTimeout(function() {
console.log(" [x] Done");
ch.ack(msg);
}, secs * 1000);
});
});
});

代码来源:https://www.rabbitmq.com/tutorials/tutorial-two-javascript.html

关于javascript - rabbitmq如何限制消费消息数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55210388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com