通过.NET客户端的持久性消息的RabbitMQ延迟

根据下面的文档,在保存消息时,RabbitMQ是否使用以下因素?

1等待几百毫秒,或者

2等待消息的字节阈值被接收或

3人

无法保证消息的确认时间。

确认持续消息的延迟

将消息保存到磁盘后,将发送路由到持久队列的持久消息的basic.ack。 RabbitMQ消息存储在间隔(几百毫秒)后将消息持久保存到磁盘,以最大限度地减少fsync(2)调用的次数,或者当一个队列处于空闲状态时。 这意味着在恒定负载下,basic.ack的延迟可能会达到几百毫秒。 为了提高吞吐量,强烈建议应用程序异步处理确认(作为流)或发布批量消息并等待未完成的确认。 客户端库的确切API不尽相同。

https://www.rabbitmq.com/confirms.html

下面的相关代码

using (var connection = FACTORY.CreateConnection())
{
    var channel = connection.CreateModel();
    channel.ExchangeDeclare(QUEUE_NAME, ExchangeType.Fanout, true);
    channel.QueueDeclare(QUEUE_NAME, true, false, false, null);
    channel.QueueBind(QUEUE_NAME, QUEUE_NAME, String.Empty, new Dictionary<string, object>());
    channel.BasicAcks += channel_BasicAcks;
    channel.ConfirmSelect();

    for (var i = 1; i <= numberOfMessages; i++)
    {
        var messageProperties = channel.CreateBasicProperties();
        messageProperties.SetPersistent(true);

        var message = String.Format("{0}thello world", i);
        var payload = Encoding.Unicode.GetBytes(message);
        Console.WriteLine("Sending message: " + message);
        channel.BasicPublish(QUEUE_NAME, QUEUE_NAME, messageProperties, payload);
        channel.WaitForConfirmsOrDie();
    }
}

https://rianjs.net/2013/12/publisher-confirms-with-rabbitmq-and-c-sharp

链接地址: http://www.djcxy.com/p/59245.html

上一篇: RabbitMQ Latency for Persistence messages via .NET client

下一篇: RabbitMQ: dropping messages when no consumers are connected