Да, это может быть основой at-least-once, если ответ означает устойчивое завершение операции. Но сбой после внешнего успеха и до commit приведёт к повторной обработке сообщения.
Подошло бы такое решение: читать сообщение из Kafka, асинхронно писать в соседний сервис, а коммит делать после того, как сервис ответит?
Да, это может быть основой at-least-once, если ответ означает устойчивое завершение операции. Но сбой после внешнего успеха и до commit приведёт к повторной обработке сообщения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Да, это может быть основой at-least-once, если ответ означает устойчивое завершение операции. Но сбой после внешнего успеха и до commit приведёт к повторной обработке сообщения.
Нужен idempotency key у соседнего сервиса. При асинхронной обработке offset продвигают только через непрерывно завершённые записи партиции, а не по первому пришедшему ответу. Учитывайте rebalance, timeout, ограничение concurrency и retry. Ответ «принято в память» не равен сохранённому результату, а commit offset не создаёт распределённую транзакцию.