Я работаю над приложением, которое считывает и обрабатывает события из потока AWS Kinesis Stream с помощью клиентской библиотеки Kinesis (KCL). Я не хочу, чтобы сторона, производящая события, страдала латентностью, поэтому KinesisAsyncClient использовался для отправки событий. Однако для того, чтобы моя обработка событий работала правильно, мне нужно обработать evens в «порядке, который я назвал putRecordAsync» на моей стороне производителя. Эта информация доступна как поле метки времени внутри каждой записи Kinesis.Как изменить порядок асинхронно отправленных событий Kinesis внутри KCL
Помимо переключения на использование синхронного клиента Kinesis с блокировкой, существует ли другое решение, позволяющее эффективно сортировать потоковые события?
Читатель будут получать события в том порядке, в котором они находятся в потоке. Вы можете контролировать порядок событий со стороны производителя. Вы можете использовать putRecords (обратите внимание на s), который упорядочивает несколько событий. Вы также можете использовать seq-id предыдущего события, чтобы поместить следующее событие за ним. Это имеет смысл для вас? – Guy
@Guy Does putRecordsAync с помощью Async Client от Kinesis также гарантирует порядок событий? – SuSanD
Призыв API к Kinesis с помощью PutRecords (синхронизация или асинхронный) сохраняет порядок событий в полезной нагрузке вызова. Если вы делаете в клиентском коде дополнительную партию для создания другого вызова API, эти события могут быть не в порядке вы вызвали асинхронный вызов в нескольких вызовах. – Guy