AWS KCL库中的检查点和修整有何关系?
文档页面“处理启动,关闭和限制”显示:
默认情况下,KCL开始从
流;这是最近添加的记录。在这
配置,如果数据生成应用程序将记录添加到
在任何接收记录处理器运行之前流
启动后,记录处理器不会读取它们。
更改记录处理器的行为,使其始终
从流的开头读取数据,设置以下值
在您的Amazon Kinesis Streams应用程序的属性文件中:
initialPositionInStream = TRIM_HORIZON
文档页面使用Java开发Amazon Kinesis客户端库使用者说:
流需要记录处理器来跟踪记录
已经在分片中处理过的KCL负责
通过检查点为您进行跟踪
(IRecordProcessorCheckpointer)来处理记录。记录处理器
在此接口上调用checkpoint方法,以告知KCL如何
它在处理分片中的记录方面已经取得了很大进展。在里面
如果工作程序失败,则KCL使用此信息重新启动
在最近的已知处理记录上对分片的处理。
第一页似乎说KCL在流的顶端恢复,第二页在最后一个已知的已处理记录(已被RecordProcessor
使用checkpointer
标记为已处理)处恢复。就我而言,我绝对需要在最后一个已知的处理记录处重新启动。我需要将initialPositionInStream设置为TRIM_HORIZON吗?
最佳答案
使用kinesis stream,您有两个选择,可以读取最新记录,也可以从最早的记录开始(TRIM_HORIZON)。
但是,一旦启动您的应用程序,它只会从使用其检查点停止的位置读取信息。
您可以在dynamodb中看到这些检查点(通常,表名作为应用程序名称)。
因此,如果您重新启动应用程序,则通常会从停止位置继续。
答案是否定的,您无需将initialPositionInStream设置为TRIM_HORIZON。