Как увеличить задержку между каждой повторной неудачной загрузкой - PullRequest
0 голосов
/ 23 января 2019

У меня есть задание потоковой передачи, которое получает сообщения от Кафки. Для некоторых сообщений файл загружается из внешнего источника. Если по какой-либо причине внешний источник не отвечает, повторное выполнение задания несколько раз.

Если он все еще не может загрузить файл, который мне нравится, в течение часа и затем повторите попытку. Если это не помогло, следует удвоить задержку и повторить попытку через 2 часа и т. Д.

Что было бы хорошим способом реализовать это с помощью Kafka и Spark?

Одна мысль состоит в том, чтобы опубликовать информацию о неудачных загрузках в новую тему на Kafka, добавив время повторной попытки Затем каждые 10 минут запускается пакетное задание, которое получает информацию о неудачных загрузках. Работа должна затем сделать следующее: 1. для всех загрузок, когда время повтора не прошло, сообщение отправляется в kafka. 2. для всех загрузок, где прошло время повторных попыток, повторите попытку загрузки, и если все прошло успешно, все в порядке, но в случае неудачи информация отправляется обратно в kafka с новым временем повторения.

Единственное, что мне не нравится в этом решении, это то, что оно получает и публикует сообщения, которые, если задержка не прошла, приводят к большему количеству необходимого трафика.

Мне бы хотелось узнать о плюсах и минусах этого решения или, если есть более эффективные способы его реализации.

Спасибо, Себастьян

...