Как использовать сообщения одно за другим, когда обработчик событий consumer.received получает сообщение через RabbitMQ? - PullRequest
0 голосов
/ 21 апреля 2020

В приведенном ниже коде _model.BasicConsume вызывается до того, как сообщения, полученные через событие consumer.received, получат сообщение. Таким образом, он очищает все элементы очереди от события, которое запускается, а затем последующее событие запускается асинхронно. Как я могу убедиться, что только элементы, полученные через триггер события, потребляются в очереди один за другим, а не все вместе?

public  static void ReceiveMessages()
        {
            var consumer = new RabbitMQ.Client.Events.EventingBasicConsumer(_model);

            Console.WriteLine(" [*] Waiting for messages...");

            consumer.Received += (Payment, ea) =>
            {               
                var body = ea.Body;
                var message = (Payment)body.ToArray().DeSerialize(typeof(Payment));                
                Console.WriteLine($"Message is : {message.CardNumber} : {message.Name} : {message.Amount}");
            };

            _model.BasicConsume(QueueName, true, consumer);

            Console.WriteLine(" Press enter to exit...");
            Console.ReadLine();
        }
...