одной партиции, если консьюмер подписан на несколько?
То есть, у нас есть консьюмер, который подписан на топик 'test', в котором есть две партиции. Я делаю
consumer.poll(max_records=10)
и мне приезжает 10 сообщений из одной партиции обычно. Но если новых сообщений в одной партиции меньше 10, то консьюмер заглядывает еще и в другую партицию и выгребает новые сообщения еще и оттуда. Есть какой-то способ избежать такого поведения?
А в чем проблема с ним?
Роллбэки в случае ошибок очень тяжко делать. Изначально все роллбэки проектировались для схемы "1 консьюмер-1 партиция". Но все поменялось и чувствую, что сейчас нужно будет активно приседать начинать
Ну сделай количество консьюмеров по количеству партиций
Я не могу( Заказчик хочет вот так вот чтобы работало
Ну так если консьюмеров меньше чем партиций, они должны из нескольких читать
А большой поток в секунду?
Да, я просто хочу, чтобы один поллинг читал из одной партиции. Это почти так и происходит, проблемы начинаются когда не хватает новых сообщений чтобы забить max_records и консьюмер идет в другую партицию
30 тысяч
Так погоди. Если у тебя консьюмеров меньше чем партиций, у тебя или консьюмер читает из нескольких партиций или есть партиции которые никто не читает
Понял, коммитить каждое не вариант
Консьюмер читает из нескольких. Мне нужно чтобы он мог читать из любой партиции вообще, но в рамках одного поллинга только из одной партиции
Ну технически насколько я могу судить из апи клиента, так сделать можно.
а если поднять два коннекта внутри одного приложения?
Ну можно асайн делать после каждого поллинга по кругу, но это сильно замедлит все дело( Думаю вот накостылить подсчет сколько каких сообщений из каждой партиции пришло, чтобы знать где и насколько откатить нужно будет в случае проблем
А как это поможет? Чет я туплю и не понимаю(
будет как бы два клиента внутри одного приложения
Да там хотят, чтобы типа поднималось столько реплик, сколько партиций. НО ВДРУГ ЧТО ДАВАЙ СДЕЛАЕМ ЧТОБЫ НЕСКОЛЬКО ПАРТИЦИЙ ТОЖЕ ОБРАБАТЫВАЛО)))
Обсуждают сегодня