In the code below, _model.BasicConsume is called before the messages received via consumer.received event gets the message. So it clears all the queue items from the event is triggered and then later event is triggered asynchronously. How can I make sure that only items received via event trigger are consumed by the queue one by one instead of all together?
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();
}