我希望通过给定的Timespan(或开始时间)重播Kinesis记录
用例:
在应用程序失败时,某些流记录可能被视为已处理,但实际上并未最终确定。即未保存在本地数据存储中。所以在系统恢复方面,我们希望在当前检查点提前30分钟(或任何给定数量)开始处理记录。
我偶然发现了https://github.com/scopely/kinesis-vcr 它将Kinesis记录保存到S3中,然后重播S3中的事件
我想知道是否有可能在没有s3的情况下重播记录,因为Kinesis会保留24小时的记录。 24小时足够长。
答案 0 :(得分:0)
基于时间的迭代器使您的流可以轻松地由您的处理应用程序重放。使用基于时间的迭代器,您可以从流中与时间戳对应的位置读取记录。
这使您能够在默认的24小时或延长的7天数据保留期内回溯并重播任何时间窗口的流。 Java Streams API有一个名为GetShardIterator的东西,你可以尝试找到类似于C#
的东西。答案 1 :(得分:0)
您需要指定ShardIteratorType TIMESTAMP。
我认为这可能是错误的方式。最好保留成功处理记录的序列号,并让您的应用程序使用它来处理下一条记录(开始使用AT_SEQUENCE_NUMBER的ShardIteratorType)。如果你以编程方式构建它,那么你可以将猜测工作从x时间段开始。