using RabbitMQ.Client; using RabbitMQ.Client.Events; using System.Data.Common; using System.Text; using System.Threading.Channels; var factory = new ConnectionFactory { HostName = "rabbitmq", UserName = "admin", Password = "admin" }; using var connection = await factory.CreateConnectionAsync(); using var channel = await connection.CreateChannelAsync(); var queueName = "fast_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("[Consumer2] 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($"[Consumer2] Received: {message}"); Console.WriteLine("[Consumer2] Done processing"); channel.BasicAckAsync(deliveryTag: ea.DeliveryTag, multiple: false); return Task.CompletedTask; }; await channel.BasicConsumeAsync(queue: queueName, autoAck: false, consumer: consumer); }