Apa*_*P L 6 amazon-web-services amazon-dynamodb amazon-kcl
根据AWS 文档:
工作者使用 Java ExecutorService 任务调用记录处理器方法。如果任务失败,worker 保留对记录处理器正在处理的分片的控制。worker 启动一个新的记录处理器任务来处理该分片。有关更多信息,请参阅读取限制。
根据AWS 文档的另一页:
Kinesis 客户端库 (KCL) 依靠您的 processRecords 代码来处理因处理数据记录而产生的任何异常。从 processRecords 抛出的任何异常都会被 KCL 吸收。为避免对重复出现的故障进行无限重试,KCL 不会重新发送发生异常时处理的记录批次。然后 KCL 为下一批数据记录调用 processRecords,而无需重新启动记录处理器。这有效地导致消费者应用程序观察到跳过的记录。为防止跳过记录,请适当处理 processRecords 中的所有异常。
这两个不是自相矛盾的说法吗?一个说记录处理器重新启动,另一个说跳过了分片。当记录处理器出现故障时,KCL 究竟会做什么?KCL 工作人员如何知道记录处理器是否发生故障?
根据我编写、调试和支持基于 KCL 的应用程序的经验,第二个语句更清晰/准确/有用,用于描述您应该如何考虑错误处理。
首先介绍一下背景:
第一条语句试图(不是很清楚)说明当KCL 任务失败时,该工作程序实例将保持对其正在处理的分片的控制(而不是将它们转移给另一个工作程序)。
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |