如何使用 KCL C# 重播 Kinesis 记录

本文关键字:Kinesis 记录 重播 何使用 KCL | 更新日期: 2023-09-27 18:34:43

我想按给定的时间跨度(或开始时间(重播 Kinesis 记录

用例:

在应用程序失败时,某些流记录可能被视为已处理,但实际上并未最终确定。 即未保存在本地数据存储中。 因此,在系统恢复方面,我们希望在当前检查点的 30 分钟(或任何给定数量(之前开始处理记录。

我遇到了这个 https://github.com/scopely/kinesis-vcr它将 Kinesis 记录保存到 S3 中,然后重播来自 S3 的事件

我想知道是否可以在没有 s3 的情况下重播记录,因为 Kinesis 将记录保留 24 小时。 24小时已经足够长了。

如何使用 KCL C# 重播 Kinesis 记录

基于时间的迭代器使处理应用程序可以轻松重播流。使用基于时间的迭代器,您可以从流中与时间戳对应的位置读取记录。

这使您能够及时返回并在默认的 24 小时或延长的 7 天数据保留期内的任何时间窗口重播流。Java Streams API有一个名为GetShardIterator的东西,你可以尝试在C#中找到类似的东西

您需要指定 ShardIteratorType 的 TIMESTAMP

我认为这可能是错误的方法。最好保留成功处理的记录的序列号,并让应用使用该序列号来处理下一条记录(开始使用 AT_SEQUENCE_NUMBER 的 ShardIteratorType(。如果你像这样以编程方式构建它,你就消除了回溯x时间段的猜测工作。