正在获取RabbitMQ队列中已处理消息数

nle07wnf  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(232)

我想通过编程的方式获得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条消息(事先知道)时才进行计算?
谢谢你,谢谢你

tkclm6bt

tkclm6bt1#

由于您可以控制第一个处理步骤,因此可以将消息拆分到两个队列中。队列A包含尚未处理的消息,队列B包含处理后发布的消息。
对于批处理,您可以将QueueA中未确认的消息存储在内存中,以其他方式触发处理(内存中有X条消息时,每X分钟触发一次,等等),然后确认它们并发布到QueueB中。
请注意,如果处理服务被终止,并且保留了未确认的消息,则会发生自动排队。我认为即使连接仍在运行,也会有24小时的排队超时,但我在文档中找不到它。

相关问题