Можно ли читать поток Kinesis по требованию без задержки

У меня есть следующий вариант использования

  • У меня есть поток кинезис, имеющий пользовательские данные.
  • Я хочу прочитать поток кинезис на основе действий пользователя.
  • Фильтрация записей на основе пользовательского ввода, продолжайте фильтрацию в течение некоторого периода времени, скажем, 5 минут.
  • Продолжайте возвращать эти отфильтрованные партии пользователю в течение 5 минут.
  • После тайм-аута перестаньте читать кинезис

Вопрос: Есть ли способ чтения кинезиса по требованию, без каких-либо задержек с использованием KCL или любой другой библиотеки. Скажем, я могу настроить KCL jvm-приложения, которые в данный момент не читают, когда они начинают действовать, просто начните читать. Точно так же прекратите чтение после некоторого времени ожидания или дальнейшего действия пользователя.

Я могу написать логику, которая может сделать это, но хотел бы знать, есть ли что-то встроенное в KCL.

0 ответов

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

Вы можете настроить время ожидания, когда нет никаких записей с KinesisClientLibConfiguration.idleTimeBetweenReadsInMillis - по умолчанию 1 секунда. Здесь есть много опций конфигурации для точной настройки поведения по мере необходимости.

Теперь, если ваши потоки будут пустыми большую часть времени, может быть более рентабельным использование AWS Lambda для обработки ваших потоков, что будет обрабатывать ваши записи по требованию без необходимости запуска (и оплаты) оборудования для постоянной работы операции чтения из потока.

Другие вопросы по тегам