Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.
А если не использовать базу данных и Spring-обёртки — можно ли так же разделить получение и обработку сообщения?
Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.
KafkaConsumer не используют конкурентно из workers. Управляющий поток распределяет задания, применяет pause/resume и коммитит только непрерывно завершённые offsets по partition. После падения незакоммиченные записи читаются заново. Если обработка имеет внешний эффект, идемпотентность всё равно нужна; память процесса не обеспечивает долговечный учёт выполненной работы.