У меня есть задание потоковой передачи, которое получает сообщения от Кафки. Для некоторых сообщений файл загружается из внешнего источника.
Если по какой-либо причине внешний источник не отвечает, повторное выполнение задания несколько раз.
Если он все еще не может загрузить файл, который мне нравится, в течение часа и затем повторите попытку. Если это не помогло, следует удвоить задержку и повторить попытку через 2 часа и т. Д.
Что было бы хорошим способом реализовать это с помощью Kafka и Spark?
Одна мысль состоит в том, чтобы опубликовать информацию о неудачных загрузках в новую тему на Kafka, добавив время повторной попытки
Затем каждые 10 минут запускается пакетное задание, которое получает информацию о неудачных загрузках.
Работа должна затем сделать следующее:
1. для всех загрузок, когда время повтора не прошло, сообщение отправляется в kafka.
2. для всех загрузок, где прошло время повторных попыток, повторите попытку загрузки, и если все прошло успешно, все в порядке, но в случае неудачи информация отправляется обратно в kafka с новым временем повторения.
Единственное, что мне не нравится в этом решении, это то, что оно получает и публикует сообщения, которые, если задержка не прошла, приводят к большему количеству необходимого трафика.
Мне бы хотелось узнать о плюсах и минусах этого решения или, если есть более эффективные способы его реализации.
Спасибо, Себастьян