如何在RabbitMQ接收器中添加定时器?

ogq8wdun  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(118)

我找不到任何解释。
正如我对RabbitMQ的理解,在C#消费者中接收消息的简单示例如下所示:

var factory = new ConnectionFactory() { HostName = "localhost" };

using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{    
   channel.QueueBind("Testing", "DefaultExcange", "Testing");
   var consumer = new EventingBasicConsumer(channel);

   consumer.Received += (model, ea) =>
   {
      var body = ea.Body;

      ...
      ...

      channel.BasicAck(ea.DeliveryTag, false, false);
   };

  channel.BasicConsume(queue: "Testing", autoAck: false, consumer: consumer);

}

它将立即接收任何消息,如果我删除BasicAck,消息将一次又一次地返回队列,直到它被确认。
我想做的是给它加上一个计时器。如果消息未被确认,我需要等待30秒,等待下一次确认此消息的尝试。没有发现任何与此相关的问题,但我敢肯定,这是一个共同的。我怎么能做到呢?

lmvvr0a8

lmvvr0a81#

你应该使用延迟消息交换插件:
https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
请注意,这是一个社区插件,默认情况下不与RabbitMQ一起提供。

相关问题