通过.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