NextShardIterator从运动学流中读取数据时永远不会返回null

问题描述 投票:0回答:1

我正在尝试在lambda函数中的特定时间戳记之后从运动学流中读取记录。我得到了碎片,碎片迭代器,然后是数据。当我获得第一个迭代器时,我将获取数据并继续使用NextShardIterator递归调用同一函数(在返回的数据中存在)。根据文档,当没有更多数据要读取并且已达到$ latest时,NextShardIterator将返回null。但是它永远不会返回null,并且该函数会不断被调用,最终我会获得Provisioned Throughput Exceeded Exception。我还尝试使用MillisBehindLatest在值为零时停止读取,但是在某些情况下也失败。

是否存在基于时间戳从运动学获取数据的正确方法?

amazon-web-services aws-lambda amazon-kinesis
1个回答
0
投票

NextShardIterator仅在到达封闭分片的末尾时才返回null(在使用UpdateShardCount,SplitShard或MergeShard更新分片计数的情况下)

“ NextShardIterator分片中的下一个位置,从该位置开始顺序读取数据记录。如果设置为null,则分片已关闭,请求的迭代器不再返回任何数据。“

如果要开始从指定的时间戳读取流,最好的方法是将事件源映射与lambda一起使用,并将StartingPosition指定为lambda中的TIMESTAMP。

© www.soinside.com 2019 - 2024. All rights reserved.