GetRecords
Получает сообщения из сегмента потока данных.
Значение ShardIterator
определяет позицию в сегменте, с которой будет начато последовательное чтение сообщений. Если в сегменте нет новых сообщений, GetRecords
возвращает пустой список. В этом случае повторите вызов GetRecords
.
При циклическом чтении сообщений из потока нужно использовать GetShardIterator
, чтобы получить итератор сегмента для использования в первом запросе GetRecords
. Для последующих чтений можно использовать значение NextShardIterator
, которое возвращается в ответе GetRecords
. Если сегмент был закрыт, GetRecords
возвращает null
в значении NextShardIterator
.
Размер данных, которые возвращаются GetRecords
ограничен 2 МБ/с, метод можно вызывать не чаще, чем 5 раз в секунду. Если в результате вызова GetRecords
возвращается большее количество данных, то последующие вызовы будут завершаться с ошибкой ProvisionedThroughputExceededException
, пока пропускная способность не вернется к значению 2 МБ/с. Например, если в результате запроса вернулось 10 МБ/с, последующие запросы в течение 5 секунд будут завершаться с ошибкой.
Чтобы определить, успевает ли ваше приложение обрабатывать все поступающие в сегмент данные, можно использовать значение MillisBehindLatest
в ответе.
Запрос
Запрос содержит данные в формате JSON.
{
"Limit": number,
"ShardIterator": "string"
}
Параметры запроса
Параметр | Описание |
---|---|
Limit |
Максимальное количество возвращаемых записей. Тип: Целое число. Возможные значения 1 - 10000 .Обязательный: Нет. |
ShardIterator |
Позиция в сегменте, с которой будет начато последовательное чтение сообщений. Значение итератора определяется порядковым номером сообщения в сегменте. Тип: Строка. Размер: 1 -512 символов.Обязательный: Да. |
Ответ
В случае успеха возвращаются HTTP-ответ с кодом 200 и данные в формате JSON.
{
"ChildShards": [{
"HashKeyRange": {
"EndingHashKey": "string",
"StartingHashKey": "string"
},
"ParentShards": ["string"],
"ShardId": "string"
}],
"MillisBehindLatest": number,
"NextShardIterator": "string",
"Records": [{
"ApproximateArrivalTimestamp": number,
"Data": blob,
"EncryptionType": "string",
"PartitionKey": "string",
"SequenceNumber": "string"
}]
}
Параметры ответа
Параметр | Описание |
---|---|
ChildShards |
Список дочерних сегментов текущего сегмента. Возвращается при достижении конца текущего сегмента. Тип: Массив. Обязательный: Нет. |
MillisBehindLatest |
Количество миллисекунд, на которое результаты, возвращаемые GetRecords , отстают от последних записанных данных в поток. Значение 0 означает, что возвращаются последние записанные данные без отставаний.Тип: Длинное целое число.Минимальное значение: 0 .Обязательный: Нет. |
NextShardIterator |
Итератор позиции в сегменте, с которой можно начать следующее последовательное чтение. Если сегмент больше не существует, возвращается значение null .Тип: Строка.Размер: 1 -512 символов.Обязательный: Да. |
Records |
Сообщения, которые извлекаются из сегмента. Тип: Массив. Обязательный: Нет. |
Ошибки
Параметр | Описание | Код HTTP |
---|---|---|
ExpiredIteratorException |
Время жизни указанного итератора истекло. | 400 |
InvalidArgumentException |
Недопустимый аргумент. Дополнительные сведения смотрите в сообщении об ошибке. | 400 |
ProvisionedThroughputExceededException |
Недостаточно пропускной способности для выполнения запроса. | 400 |
ResourceNotFoundException |
Запрошенный ресурс не найден. | 400 |
Могут возникать ошибки, общие для всех методов.