distributed-computing/tasks/mutriskov-ds/lab_4/MainTask/Consumer-2/Program.cs

35 lines
1.0 KiB
C#
Raw Normal View History

2024-01-08 23:04:03 +04:00
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
var factory = new ConnectionFactory { HostName = "localhost" };
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
2024-01-09 00:42:05 +04:00
Random rand = new Random();
string queueName = $"queue{rand.Next()}";
2024-01-08 23:04:03 +04:00
2024-01-09 00:42:05 +04:00
channel.QueueDeclare(queue: queueName);
channel.QueueBind(queue: queueName,
exchange: "reports",
routingKey: string.Empty);
Console.WriteLine(" [*] Waiting for messages.");
2024-01-08 23:04:03 +04:00
var consumer = new EventingBasicConsumer(channel);
2024-01-09 00:42:05 +04:00
consumer.Received += async (model, ea) =>
2024-01-08 23:04:03 +04:00
{
byte[] body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
var reportNumber = message.Split('#')[1];
2024-01-09 00:42:05 +04:00
Thread.Sleep(2500);
2024-01-08 23:04:03 +04:00
Console.WriteLine($" [x] Отчет #{reportNumber} создан.");
channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
};
2024-01-09 00:42:05 +04:00
channel.BasicConsume(queue: queueName,
autoAck: false,
consumer: consumer);
2024-01-08 23:04:03 +04:00
2024-01-09 00:42:05 +04:00
Console.WriteLine(" Press [enter] to exit.");
2024-01-08 23:04:03 +04:00
Console.ReadLine();