我想通过编程的方式获得RabbitMQ队列中的一些已确认和未确认消息。我使用的是Typescript SDK。我已经搜索过了,但人们通常建议使用HTTP API,这对我来说没有用。
我使用了一个测试场景,在这个场景中,我发出X条消息,然后基于这些消息执行一些计算。“,消费者尚未收到短信。
我在发送消息和基于这些消息执行计算之间设置了超时,但这是浪费时间:
import * as amqp from "amqp-ts";
const connection = new amqp.Connection();
const queue = connection.declareQueue(queueName, { durable: false });
let testMessage = new amqp.Message({
"hello"
});
queue.send(testMessage);
await new Promise((resolve) => setTimeout(resolve, 2000));
// perform computation
是否可以只在队列处理了X条消息(事先知道)时才进行计算?
谢谢你,谢谢你
1条答案
按热度按时间tkclm6bt1#
由于您可以控制第一个处理步骤,因此可以将消息拆分到两个队列中。队列A包含尚未处理的消息,队列B包含处理后发布的消息。
对于批处理,您可以将QueueA中未确认的消息存储在内存中,以其他方式触发处理(内存中有X条消息时,每X分钟触发一次,等等),然后确认它们并发布到QueueB中。
请注意,如果处理服务被终止,并且保留了未确认的消息,则会发生自动排队。我认为即使连接仍在运行,也会有24小时的排队超时,但我在文档中找不到它。