我们无法找到任何解释。
据我了解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秒才能对此消息进行下一次确认尝试。没有找到与此问题相关的任何内容,但我确定这个问题很常见。我怎么能做到这一点?
答案 0 :(得分:0)
RabbitMQ团队监控this mailing list,有时只回答StackOverflow上的问题。
您应该使用Delayed Message Exchange插件:
https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
请注意,这是一个社区插件,默认情况下不会随RabbitMQ发送。