using RabbitMQ.Client; using RabbitMQ.Client.Events; using System.Text; var factory = new ConnectionFactory { HostName = "rabbitmq", UserName = "admin", Password = "admin" }; using var connection = await factory.CreateConnectionAsync(); using var channel = await connection.CreateChannelAsync(); var queueName = "slow_queue"; var exchangeName = "logs_exchange"; await channel.QueueDeclareAsync(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: null); await channel.QueueBindAsync(queue: queueName, exchange: exchangeName, routingKey: ""); Console.WriteLine("[Consumer1] Waiting for messages..."); while (true) { var consumer = new AsyncEventingBasicConsumer(channel); consumer.ReceivedAsync += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); Console.WriteLine($"[Consumer1] Received: {message}"); Thread.Sleep(new Random().Next(2000, 3000)); Console.WriteLine("[Consumer1] Done processing"); channel.BasicAckAsync(deliveryTag: ea.DeliveryTag, multiple: false); return Task.CompletedTask; }; await channel.BasicConsumeAsync(queue: queueName, autoAck: false, consumer: consumer); }