В настоящее время я пишу kafka cosumer. Работа потребителя заключается прежде всего в создании нескольких сущностей БД и их сохранении после обработки полезной нагрузки. Я пытаюсь написать код для обработки ошибок, которые могут возникнуть при использовании данных. Для этого я могу придумать 2 варианта (в весенней эко-системе)
- Отправить сообщение об ошибке в dead-letter-kafka-topic
- Отправить сообщение об ошибке новомуТаблица БД (Error-table)
Неудачные сообщения необходимо снова обработать.
В случае 1: Снова мне нужно написать еще один @KafkaListner, который слушает тупик-тему и обрабатывает сообщение. Здесь проблема в том, что я не могу лучше контролировать процесс повторной обработки. (Как планировщик) Поскольку KafkaListener начнет обрабатывать данные, как только данные будут опубликованы в теме недоставленных сообщений.
В случае 2: У меня есть ещеконтроль над процессом повторной обработки, так как я могу написать конечную точку REST или планировщик, который попытается повторно обработать ошибочные сообщения. (Здесь у меня дилемма, какую БД использовать. Реляционное ИЛИ какое-то хранилище значений ключей)
В основном у меня возникает проектная дилемма, и я не могу определить, какой подход лучше в SpringЭкосистема.
Оцените ответ.