А если не использовать базу данных и Spring-обёртки — можно ли так же разделить получение и обработку сообщения?

Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.

Короткий ответ

Что ответить на собеседовании

Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.

Подробный разбор

Ответ с пояснениями

Да, Kafka poll-loop можно отделить от workers обычными средствами Java: ограниченной очередью и передачей результатов обратно. Отсутствие Spring и БД не отменяет правил offsets, rebalance и повторной доставки.

KafkaConsumer не используют конкурентно из workers. Управляющий поток распределяет задания, применяет pause/resume и коммитит только непрерывно завершённые offsets по partition. После падения незакоммиченные записи читаются заново. Если обработка имеет внешний эффект, идемпотентность всё равно нужна; память процесса не обеспечивает долговечный учёт выполненной работы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее