根据AWS 文档:
工作人员使用 Java ExecutorService 任务调用记录处理器方法。如果任务失败,工作人员将保留对记录处理器正在处理的分片的控制权。工作人员启动一个新的记录处理器任务来处理该分片。有关详细信息,请参阅读取限制。
根据AWS docs 上的另一个页面:
Kinesis 客户端库 (KCL) 依靠您的 processRecords 代码来处理因处理数据记录而产生的任何异常。从 processRecords 引发的任何异常都会被 KCL 吸收。为避免重复发生故障时无限重试,KCL 不会重新发送在异常发生时处理的记录批次。然后,KCL 为下一批数据记录调用 processRecords,而无需重新启动记录处理器。这有效地导致消费者应用程序观察到跳过的记录。为防止跳过记录,请适当处理 processRecords 中的所有异常。
这2个说法不矛盾吗?一个说记录处理器重新启动,另一个说分片被跳过。当记录处理器发生故障时,KCL 究竟做了什么?KCL 工作人员如何知道记录处理器是否发生故障?