2016-12-22 3 views
3

Я использую Java API для Kinesis Firehose и использую putRecordBatch(), где это возможно. Однако в моем приложении я иногда отправляю только одну запись и не могу позволить себе ждать больше или кэшировать ее в памяти.Kinesis Firehose putRecord vs putRecordBatch

Однако мой код немного сложнее, чем я хочу, потому что я отслеживаю количество успешных/неудачных попыток для каждой операции. putRecordBatch возвращает int, представляющий количество неудачных отправлений из набора отправленных записей, например. 2 из 4 сбоев, тогда как putRecord() либо преуспевает, либо генерирует исключение.

Я бы предпочел просто использовать putRecordBatch() всюду, но документ говорит, что использовать его только если у вас есть несколько записей для отправки.

Это может быть немного длинным выстрелом, но кто-нибудь здесь имеет опыт работы с этим API, в частности эти методы? Вы сделали то, что я созерцаю, и просто использовали putRecordBatch() повсюду, даже с набором записей из 1?

ответ

0

Я настроил именно то, что вы описываете: ситуация, которая обычно отправляет пакетные звонки, но иногда посылает только одну запись с помощью putRecordBatch(). По моему пониманию документов, похоже, что они только уточняют, что если вы хотите просто отправить одну запись, вы должны использовать putRecord, в отличие от фактического указания этого. Из преимуществ производительности я вижу использование только putRecordBatch() - который отлично работает, если вам нужно отправить 1 запись, кстати - я уверен, что вы должны быть в порядке использовать putRecordBatch() для всех отправлений.

+0

Спасибо @dizzyf, вот что я предположил, хотя, если у меня есть достаточно времени, я бы хотел проверить это в разумных пределах, чтобы убедиться, что при использовании putRecordBatch не существует отрицательного побочного эффекта. Для моего варианта использования я обычно посылаю по одной записи за один раз и иногда отправляю партии записей. Я бы оценил, что мое приложение делает последнее <10% времени. – matthewcummings516

+0

@ matthewcummings516 Просто выполните следующие действия: FWIW, мы запустили putRecordBatch() за последний месяц + без отрицательных побочных эффектов. Никаких ошибок и производительности по-прежнему первоклассно. – dizzyf

+0

Отлично, спасибо @dizzyf – matthewcummings516