【发布时间】:2020-10-06 22:14:23
【问题描述】:
我们正在构建基于 Kinesis / DynamoDB 流的服务,我们对检查点的行为有以下疑问。
我们有一个worker,以下面的配置withInitialPositionInStream (InitialPositionInStream.LATEST)开头,KCL应用的名字总是一样的。
我们通过关闭和再次打开工作人员观察到的是,它不会从流的末尾开始消费,因为我们有一个滞后指标,我们看到当工作人员打开时,消费滞后是小时,而我们预计它会少于 1 秒,因为它们是我们目前生成的消息。
- 这是预期行为吗?
- 我们是否误解了
LATEST的工作原理?
非常感谢。
【问题讨论】:
-
您能说明一下您使用的是什么版本的 kinesis 库吗?另外,您是否手动检查点?谢谢。
-
嗨 Mikalai,我在 java 中使用的是 2.2.11 版的 KCL,我们在
processRecords中手动执行检查点,但我认为 KCL 在processRecords之后会自动执行检查点。 -
一般来说,LATEST 仅在初始启动时才考虑,当没有租用表时。如果您使用相同的应用程序 id 重新启动应用程序,kcl 将从每个分片的最新设置 num 恢复。据我所知,它不会自动检查点,与例如 kafka 消费者相比。您必须手动检查点。
标签: amazon-kinesis amazon-dynamodb-streams amazon-kcl