根据AWS文档,工作程序使用Java ExecutorService任务调用记录处理器方法。如果任务失败,工作程序将保留记录处理器正在处理的分片的控制权,并启动一个新的记录处理器任务来处理该分片。有关更多信息,请参阅读取限制。
根据AWS文档中的另一页,Kinesis客户端库(KCL)依赖于您的processRecords代码来处理处理数据记录时出现的任何异常。从processRecords抛出的任何异常都会被KCL吸收。为避免在经常发生故障时进行无限重试,KCL不会重新发送在出现异常时处理的记录批次。然后,KCL为下一批数据记录调用processRecords,而不重新启动记录处理器。这实际上导致消费者应用程序观察到跳过的记录。为了防止跳过记录,请适当地处理processRecords中的所有异常。
这两个语句不是矛盾的吗?一个说记录处理器重新启动,另一个说分片被跳过。当记录处理器失败时,KCL到底做了什么?KCL工作程序如何知道记录处理器失败?
根据AWS文档中的另一页,Kinesis客户端库(KCL)依赖于您的processRecords代码来处理处理数据记录时出现的任何异常。从processRecords抛出的任何异常都会被KCL吸收。为避免在经常发生故障时进行无限重试,KCL不会重新发送在出现异常时处理的记录批次。然后,KCL为下一批数据记录调用processRecords,而不重新启动记录处理器。这实际上导致消费者应用程序观察到跳过的记录。为了防止跳过记录,请适当地处理processRecords中的所有异常。
这两个语句不是矛盾的吗?一个说记录处理器重新启动,另一个说分片被跳过。当记录处理器失败时,KCL到底做了什么?KCL工作程序如何知道记录处理器失败?