2016-10-14 65 views

回答

0

我想這是因爲GetRecords可以返回一個空的Record元素,即使在kinesis流中有數據。

GetRecords是一種非阻塞操作,旨在用於「拉」模型,例如,消費應用程序在一個循環內調用GetRecords(這在KCL中並不需要爲您完成這項工作)。我已經使用了表達式「拉」,但實際上記錄不會被消費者刪除。調用getRecords只會增加消費者的抵消。

使GetRecords非阻塞是一種架構選擇,可避免在檢索記錄時出現無限制的查找時間(延遲)。

實際上,即使流中有數據,調用GetRecors也可以返回一個空Record元素。這種情況發生在兩種情況下: - 分片中當前沒有更多數據,或者 - ShardIterator指向的分片部分附近沒有數據。

欲瞭解更多信息,你可以檢查此鏈接:http://docs.aws.amazon.com/streams/latest/dev/troubleshooting-consumers.html