DynamoDB有检查点时streamInitialSequence的作用及配置有效性验证
KinesisMessageDrivenChannelAdapter 消费策略与参数疑问解答
核心需求实现逻辑
要实现「首次启动读取流中所有已有记录,后续启动从DynamoDB最新检查点继续消费」的需求,无需额外特殊配置,适配器的默认检查点机制就能满足:
- 首次启动时,DynamoDB中没有对应分片的检查点记录,适配器会自动以
trimHorizon(读取流中所有历史记录)作为起始消费位置; - 后续启动时,适配器会优先读取DynamoDB中保存的检查点序列号,从该位置继续消费。
已有检查点时streamInitialSequence的作用
当DynamoDB中已经存在对应分片的检查点时,streamInitialSequence的设置完全失效。Kinesis消息驱动适配器的启动位置优先级为:DynamoDB检查点 > streamInitialSequence配置。只有在检查点不存在的场景下,才会使用streamInitialSequence指定的起始位置。
设置adapter.setStreamInitialSequence(KinesisShardOffset.trimHorizon())能否实现需求?
可以实现,但属于冗余配置:
- 首次启动无检查点时,适配器默认就会使用
trimHorizon作为起始位置(除非你手动修改过默认初始位置),这个配置只是显式重复了默认逻辑; - 后续启动有检查点时,该配置会被直接忽略,适配器依然从检查点位置继续消费。
内容的提问来源于stack exchange,提问作者Shuffling2241
相关产品推荐
相关产品推荐

