Это зависит от контракта Consumer.Process и момента очистки буфера. Если буфер сбрасывают до подтверждённого успеха, ошибка действительно может привести к потере данных.
Что произойдёт если Consumer.Process вернёт ошибку — данные из буфера не потеряются?
Это зависит от контракта Consumer.Process и момента очистки буфера. Если буфер сбрасывают до подтверждённого успеха, ошибка действительно может привести к потере данных.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт если Consumer.Process вернёт ошибку — данные из буфера не потеряются?
Ответ
Это зависит от контракта Consumer.Process и момента очистки буфера. Если буфер сбрасывают до подтверждённого успеха, ошибка действительно может привести к потере данных.
Храните неподтверждённую пачку до завершения обработки либо возвращайте её в надёжную очередь. При частичном успехе повтор может дать дубликаты, поэтому нужны идентификаторы и идемпотентность. Без реализации Process нельзя утверждать, что ошибка автоматически восстанавливает содержимое.