Сижу пишу велосипед, может кто написал уже? Вычитываем из кафки

сообщения и раскладываем по локальным очередям, сейчас коммит делаем после того как положили сообщения в локальную очередь. Вот решили что можем потерять сообщения если упадем, и делать более умный управляемый коммит. Может знает уже готовое, кейс вроде стандартный, должно же где то быть уже реализованное

4 ответов

13 просмотров

Мы параллельно обрабатываем сообщения вычитанные из партиций кафки в очередь. Обработка так гораздо быстрее чем последовательно. Но при этом для коммита надо складывать обработанные оффсеты в непрерывную последовательность и потом коммитить иначе при восстановлении в случае сбоя не обработанные сообщения могут быть потеряны. Также приходится очень тщательно обрабатывать ошибки и следить за тем что код занимающийся параллельной обработкой не должен зависать. Если одно сообщение зависнет вас может порвать по памяти при накоплении непрерывной последовательности. Готового решения не встречал. Но в доке кафки написано что если захочется параллельной обработки партиции то надо делать примерно так как я описал.

Oleg-Nyrkov Автор вопроса
Руслан Маркелов
Мы параллельно обрабатываем сообщения вычитанные и...

хорошо, спасибо, тогда наверно выложу свою поделку, может кто посмотрит скажет где не прав

Руслан Маркелов
Мы параллельно обрабатываем сообщения вычитанные и...

а backpressure не делаете, чтобы зависание не роняло приложение?

Oleg
а backpressure не делаете, чтобы зависание не роня...

у нас очереди на каждую партицию отдельные и ограниченные если очередь заполнена перестаем читать партицию пока не разгребется очередь зависание кода обработчика мы не можем контролировать (там пользовательский код) поэтому у нас есть таймаут и если в течении этого таймаута код обработчика не возвращает управление то мы просто добавляем ооффсет этого сообщения к последовательности на коммит тут выбор либо блокировать и выходить изз групппы подписки либо продолжать с подвисшим потоком, мы выбрали продолжать

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта