Middle+
57
Was passiert mit der Nachricht in Kafka, wenn während ihrer Verarbeitung eine Ausnahme ausgelöst wird (aber die Anwendung nicht abstürzt)?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Если при обработке сообщения из Kafka в приложении выбрасывается исключение, но само приложение не падает, то поведение зависит от способа обработки и настроек потребителя:
- Автоматическое подтверждение (auto-commit): если offset уже зафиксирован, то сообщение считается обработанным, и оно не будет повторно доставлено, даже если обработка завершилась с ошибкой.
- Ручное подтверждение (manual commit): если offset не был зафиксирован до исключения, то сообщение останется необработанным, и при следующем запуске или перезапуске потребителя оно будет прочитано заново.
Таким образом, если исключение не приводит к фиксации offset, сообщение будет повторно доставлено и обработано. Если offset уже зафиксирован, сообщение потеряется с точки зрения повторной обработки.
Для надежной обработки часто используют обработку с ручным подтверждением и механизмы повторных попыток или DLQ (Dead Letter Queue) для сообщений, которые не удалось обработать.