повсеместном коде?
ну естесна! я постоянно использую
Например мне недавно надо было скачать с S3 zip-архив на гиг, распаковать, распарсить жсоны, и сохранить их в БД. Все это сделал с помощью https://github.com/Open-NET-Libraries/Open.ChannelExtensions
и ты получается это делал параллельно (?) а чтобы сохранять порядок - юзал каналы, так?
Обработчик s3 стрима пишет в канал джсон. Читатель канала десериализует его и сохряет в БД.
Я вот не знаком с каналами вообще. Можете подсказать - применение каналов даёт возможность НЕ превысить максимальную производительность обработчиков путём тротлиннга "производителей" событий?
В целом да, с каналами у тебя есть backpressure, но также ты можешь добавить конкурентных читателей, чтобы ускорить обработку. Без использования каналов такой код будет сложнее написать.
Пасиба, панятна) Всё таки очень похоже на message broker но с обратной связью для publisher и максимальным объёмом канала. В а чём тогда разница с Queue в .NET?
да ни в чём. Текущее апи каналов в дотнете - это очередь)))
А в других языках? По сути это такая же очередь, но с дополнительными плюшками, эдакий "InMemory message broker".
в других - канал дефолтный без очереди, но бывает и с буфером (не дефолт)
Обсуждают сегодня