【发布时间】:2015-02-25 16:44:28
【问题描述】:
我正在使用以下代码将消息发布到 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,但这并没有改变消息速率。
【问题讨论】:
-
出于好奇,你为什么需要一秒钟发送这么多消息?