How to consume messages one by one during consumer.received event handler gets the message via RabbitMQ?

567 views Asked by At

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();
        }
0

There are 0 answers