Подошло бы такое решение: читать сообщение из Kafka, асинхронно писать в соседний сервис, а коммит делать после того, как сервис ответит?

Да, это может быть основой at-least-once, если ответ означает устойчивое завершение операции. Но сбой после внешнего успеха и до commit приведёт к повторной обработке сообщения.

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

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

Да, это может быть основой at-least-once, если ответ означает устойчивое завершение операции. Но сбой после внешнего успеха и до commit приведёт к повторной обработке сообщения.

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

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

Да, это может быть основой at-least-once, если ответ означает устойчивое завершение операции. Но сбой после внешнего успеха и до commit приведёт к повторной обработке сообщения.

Нужен idempotency key у соседнего сервиса. При асинхронной обработке offset продвигают только через непрерывно завершённые записи партиции, а не по первому пришедшему ответу. Учитывайте rebalance, timeout, ограничение concurrency и retry. Ответ «принято в память» не равен сохранённому результату, а commit offset не создаёт распределённую транзакцию.

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

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

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

Подробнее