Выполнение эффективных запросов к внешней системе при обработке потока kafka - PullRequest
2 голосов
/ 30 мая 2019

Я хотел бы использовать событие из темы Кафки, добавить его в базу данных, выполнить несколько запросов, удалить событие из базы данных и выдать результаты запроса обратно в тему.

Это похоже на то, что было задано в Внешние системные запросы при обработке Kafka Stream

В качестве примера, я мог бы выполнить запросы геолокации к пространственной БД, где я сначала вставил бы координату из полученного сообщения, выполнил поиск для вычисления некоторой окрестности, удалил координату из БД и направил вниз по потоку сообщение результата, содержащее окрестности.

Я мог бы использовать трансформер для выполнения запросов и пересылки обогащенных сообщений нисходящего потока, как это было предложено в первом решении в предыдущей ссылке. Однако при этом у меня возникают некоторые проблемы с производительностью, связанные с KafkaStream, так как это приводит к запросу на событие для Db.

  • Могу ли я использовать некоторый шаблон потока, такой как оконный поток, для пакетирования нескольких координат вместе и выполнения только одного запроса на пакет?
  • Как KafkaStreams будет реагировать в случае сбоя БД?
  • Не застрянет ли поток KafkaStream?
  • Есть ли тайм-аут, когда потоковое приложение не будет работать?
  • Когда БД вернется, поток KafkaStream восстановится нормально?
  • Какими будут угловые корпуса такого дизайна?
  • Было бы лучше разработать внешнюю службу для выполнения БД
    запросить с KafkaConnect или alpakka и прочитать запросы из темы и написать ответы в другой теме?
...