繁体   English   中英

RabbitMQ Eventing基本消费者

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM