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

时间:2018-02-20 10:08:32

标签: c# rabbitmq

我们无法找到任何解释。

据我了解RabbitMQ,消息接收的简单示例 n C#Consumer看起来像:

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秒才能对此消息进行下一次确认尝试。没有找到与此问题相关的任何内容,但我确定这个问题很常见。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

RabbitMQ团队监控this mailing list,有时只回答StackOverflow上的问题。

您应该使用Delayed Message Exchange插件:

https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/

请注意,这是一个社区插件,默认情况下不会随RabbitMQ发送。