Мы реализуем Kafka Consumer с помощью Spring Kafka. Как я правильно понимаю, если обработка одного сообщения не удалась, есть возможность
- Все равно и просто ACK
- Сделайте некоторую обработку повторных попыток, используя
RetryTemplate
- Если даже это не сработает, выполните некоторую пользовательскую обработку сбоев, используя
RecoveryCallback
Мне интересно, каковы ваши лучшие практики для этого. Я думаю о простых исключениях приложения, таких как DeserializationException (для сообщений в формате JSON) или о более длительном простое локального хранилища и т. д. Это означает, что требуется дополнительная работа, например, развертывание исправления, чтобы исправить сломанное приложение, чтобы иметь возможность повторно обрабатывать ошибочные сообщения.
Поскольку потеря сообщений (т. е. их не обработка) для нас не вариант, единственный оставшийся вариант — это IMO хранить ошибочные сообщения в каком-либо хранилище постоянства, например. грамм. например, еще одна тема «ошибочные сообщения» Kafka, чтобы эти события можно было снова обработать позже, и нет необходимости полностью останавливать обработку событий.
Как вы справляетесь с этими сценариями?