我找不到任何解释。
正如我对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秒,等待下一次确认此消息的尝试。没有发现任何与此相关的问题,但我敢肯定,这是一个共同的。我怎么能做到呢?
1条答案
按热度按时间lmvvr0a81#
你应该使用延迟消息交换插件:
https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
请注意,这是一个社区插件,默认情况下不与RabbitMQ一起提供。