如何从 AWS Kinesis 流中读取早期的记录?
使用 AWS Kinesis 流,可以发送事件流,消费者应用程序可以读取这些事件。Kinesis 流工作程序获取记录并将它们传递给 IRecordProcessor#processRecords 从最后一个检查点开始处理。
然而,如果我需要读取过去的记录,比如两个小时之前的记录,该如何配置我的 kinesis 工作程序以获取这些记录呢?
如何从 AWS Kinesis 流中读取早期的记录?
使用 AWS Kinesis 流,可以发送事件流,消费者应用程序可以读取这些事件。Kinesis 流工作程序获取记录并将它们传递给 IRecordProcessor#processRecords 从最后一个检查点开始处理。
然而,如果我需要读取过去的记录,比如两个小时之前的记录,该如何配置我的 kinesis 工作程序以获取这些记录呢?
您可以使用不同的设置重新启动(或另一个)Kinesis消费者,以获取有关Shard迭代器的不同设置。 请参阅此处的GetShardIterator 通常的设置是LATEST或TRIM_HORIZON(最旧的):
{
"ShardId": "ShardId",
"ShardIteratorType": "LATEST",
"StreamName": "StreamName",
}
但是你可以将其更改为特定时间(从过去的24小时内)
{
"ShardId": "ShardId",
"ShardIteratorType": "AT_TIMESTAMP",
"StreamName": "StreamName",
"Timestamp": 2016-06-29T19:58:46.480-00:00
}
需要记住的是通常Kinesis消费者会在DynamoDB表中保存其检查点,因此如果您正在使用相同的Kinesis应用程序,则需要首先删除这些检查点。