gpt4 book ai didi

c# - 提高 RabbitMQ 发布的性能(RabbitMQ C# 客户端)

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:44 25 4
gpt4 key购买 nike

我正在使用以下代码将消息发布到 RabbitMQ 队列:

ConnectionFactory factory = new ConnectionFactory {
HostName = hostName,
Port = port,
UserName = userName,
Password = password,
VirtualHost = "/",
Protocol = Protocols.DefaultProtocol
};
connection = factory.CreateConnection();
channel = connection.CreateModel();
channel.QueueDeclare(queue, true, false, false, null);
foreach (string message in messages) {
byte[] body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("", queue, null, body);
}

在将消息发布到本地 RabbitMQ 服务器时,我得到的消息速率高达每秒 10,000 条消息。系统的 CPU 负载 (2x3.16 GHz) 几乎达到 100%。有没有办法提高这个消息率?我的第一个想法是使用批量发布操作,但在 RabbitMQ 中似乎没有类似的东西。我的第二个想法是使用 Parallel.ForEach 而不是 foreach,但这并没有改变消息速率。

最佳答案

将队列定义为“持久”队列有额外的好处,可以在 rabbit 或服务器重启后幸存下来。缺点是要完成此操作,它会将数据写入磁盘,成本很高。

如果您最关心的是吞吐量,并且在发生故障时丢弃一些消息不是问题,那么设置“Durable=false”会增加您的吞吐量。

注意:即使使用 durable=false,如果队列长度足够长,它也会将它们转储到磁盘(毕竟,机器上只有这么多内存)。

关于c# - 提高 RabbitMQ 发布的性能(RabbitMQ C# 客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com