我正在使用AWS DynamoStream,他的API基于AWS KCL。
如果我收到了我未能处理的记录,我希望以后可以使用这些记录来重新处理它们。例如,我试图将它们保存到远程数据库,并且有时会遇到网络问题。
我的问题是:
processRecords
答案 0 :(得分:1)
KCL不提供这种内置的重新启动机制 - 一旦processRecords返回(无论是抛出异常还是成功返回),它都会将这些记录视为已处理并继续运行,即使内部失败也是如此。
如果你想稍后重新处理一些记录,你需要捕获这些记录并将它们存储在其他地方,以便稍后进行再处理(明显需要注意的是,它们不会按照其余的顺序进行处理流)。
最简单的解决方案是让您的记录处理器逻辑识别失败的记录(在返回KCL之前)并将它们发送到SQS队列。然后,记录不会丢失,它们可供您休闲处理(或由消耗SQS队列的其他进程处理,可能使用DLQ机制处理重复故障/放弃方案)。
回答您的具体问题: