Java 当AWS KCL processRecords失败时,如何;标记“;这些记录应该重新处理吗?
我正在与AWS DynamoStream合作,他的API基于AWS KCL 如果我收到了无法处理的记录,我希望这些记录稍后可用,以便重新处理。例如,我试图将它们保存到一个远程数据库中,我有时会遇到网络问题 我的问题是:Java 当AWS KCL processRecords失败时,如何;标记“;这些记录应该重新处理吗?,java,aws-sdk,amazon-dynamodb-streams,amazon-kcl,Java,Aws Sdk,Amazon Dynamodb Streams,Amazon Kcl,我正在与AWS DynamoStream合作,他的API基于AWS KCL 如果我收到了无法处理的记录,我希望这些记录稍后可用,以便重新处理。例如,我试图将它们保存到一个远程数据库中,我有时会遇到网络问题 我的问题是: 我能否以某种方式使用检查点来表示我没有处理记录 我应该避免执行Checkpointer.checkpoint()吗?如果我在下一次调用processRecords时仍使用它,它会有任何影响吗 我是否可以为此目的使用任何例外情况 KCL不提供这种内置的重新驱动机制——一旦proce
processRecords
时仍使用它,它会有任何影响吗KCL不提供这种内置的重新驱动机制——一旦processRecords返回(无论是抛出异常还是成功返回),它会将这些记录视为已处理并继续,即使在内部失败 如果您想在以后重新处理某些记录,则需要捕获这些记录并将其存储到其他地方,以便稍后进行重新处理尝试(但有一个明显的警告,即不会按照流其余部分的顺序处理这些记录) 最简单的解决方案是让您的记录处理器逻辑识别失败的记录(在返回KCL之前),并将其发送到SQS队列。这样,记录就不会丢失,并且可以在您空闲时进行处理(或者由另一个使用SQS队列的进程执行,可能使用DLQ机制来处理重复故障/放弃场景) 要回答您的具体问题: