0

我们正在构建基于 Kinesis / DynamoDB 流的服务,我们对检查点的行为有以下疑问。

我们有一个以以下配置开头的工作器,withInitialPositionInStream (InitialPositionInStream.LATEST)并且 KCL 应用程序的名称始终相同。

我们通过关闭和再次打开工作人员观察到的是,它不会从流的末尾开始消费,因为我们有一个滞后指标,我们看到当工作人员打开时,消耗滞后是几小时,当我们希望它少于 1 秒,因为它们是我们目前产生的消息。

  • 这是预期的行为吗?
  • 我们是否误解了LATEST工作原理?

非常感谢。

4

1 回答 1

1

作为InitialPositionInStream各州的文件,

用于指定新应用程序应从流中开始的位置。这在初始应用程序引导期间使用(当分片或其父级不存在检查点时)。

因此,它仅在初始新应用程序引导期间使用,在 的情况下LATEST,它在最近的数据记录之后开始。但仅当分片或其父级不存在检查点时。

因此,如果您关闭您的工作程序,然后再次打开它,则预计它LATEST不再从开始,而是从分片的最后一个检查点序列号开始。

KCL 不会自动检查点,因此如果您的工作人员以小时延迟开始,则可能意味着您的检查点太少了。

于 2020-10-06T14:14:23.830 回答