[英]RabbitMQ Eventing Basic Consumer
查看Rabbit MQ网站上面向消费者的示例代码...
var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
最初看起来好像消息是按顺序从队列中逐一发出的,并由Received部分中的代码连续处理。
但是,我现在看到的结果表明,它们可能是按顺序1比1脱落,但是同时处理,这是否正确?
问候
汤姆
使用RabbitMQ,可以通过调用以下命令来控制应同时处理的消息数量:
channel.BasicQos(0, <MaxConcurrentConsumerThreads>, false);
因此,如果时间顺序很重要,则调用channel.BasicQos(0, 1, false);
确保一次只处理1条消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.