Я новичок во Flink, у меня есть требование читать данные из Kafka, обогащать эти данные условно (если запись принадлежит категории X) с помощью некоторого API и писать в S3.
Я создал приложение "Привет, мир!" С вышеупомянутой логикой c, которая работает как шарм.
Но API, который я использую для обогащения, не имеет SLA 100% времени безотказной работы , поэтому мне нужно спроектировать что-то с помощью retry logi c.
Ниже приведены найденные мной опции,
Вариант 1) Сделайте экспоненциальную повторную попытку, пока я не получу ответ от API, но это заблокирует очередь, поэтому мне не нравится
Вариант 2) Используйте еще один topi c (называемый topi c -failure) и опубликуйте sh его в topi c - сбой, если API не работает. Таким образом, он не заблокирует текущую основную очередь. Мне понадобится еще один работник для обработки данных из очереди topi c -failure. Опять же, эта очередь должна использоваться как круговая очередь, если API не работает в течение длительного времени. Например, прочитайте сообщение из очереди topi c -failure, попробуйте выполнить обогащение, если ему не удается добавить pu sh в ту же очередь с именем topi c -failure, и получите следующее сообщение из очереди topi c -failure .
Я предпочитаю вариант 2, но, похоже, не так просто выполнить 1025 *. Существует ли какой-либо стандартный подход Flink для реализации варианта 2?