/
dimkqa
/
RabbitMQ-Learning
Обзор
Документация
Войти
/
dimkqa
/
RabbitMQ-Learning
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
RabbitMQ.SimulationTasks.Console.Consumer/Consumer.cs
41 строка
1 KB
shamrik-dmitriy
+ Добавил простой пример имитирующий длительную работу.
15 мар 2025, 13:30
15 мар 2025, 13:30
459adfd
Код
Авторство
О чём код?
using System.Linq; using System.Text; using System.Threading.Tasks; using RabbitMQ.Client; using RabbitMQ.Client.Events; namespace RabbitMQ.SimulationTasks.Console.Consumer { public class Consumer { private readonly IChannel _channel; public Consumer(IChannel channel) { _channel = channel; } public async Task<string> Receive() { var message = string.Empty; var receiveEvent = new AsyncEventingBasicConsumer(_channel); receiveEvent.ReceivedAsync += async (sender, ea) => { System.Console.WriteLine($" [x] Received from {receiveEvent.ConsumerTags.FirstOrDefault()}: {message}"); var body = ea.Body.ToArray(); message = Encoding.UTF8.GetString(body); int dotsCount = message.Split('.').Length - 1; System.Console.WriteLine($" [*] {message} processing of {dotsCount} seconds."); Task.Delay(1000 * dotsCount); System.Console.WriteLine($" [x] {message} of end processing."); }; await _channel.BasicConsumeAsync("QueueOfSimulationTasks", autoAck: true, consumer: receiveEvent); return message; } } }