kinesis客户工作者逻辑

时间:2017-01-22 17:10:13

标签: amazon-kinesis amazon-kcl

我想了解何时从worker调用IRecordProcessor的processRecords方法。如果我之前对processRecords的调用尚未完成,工作人员会调用下一个processRecords吗?工作人员是否会开始从kinesis获取新记录,还是会等到当前记录完成执行。

基本上我想等待很长时间,如果processRecords在保存外部数据库中的记录时出现异常,因为db已关闭或其他一些错误。因此,如果工作人员在完成处理之前没有开始获取新记录,那么想要确认是否存在任何问题?

1 个答案:

答案 0 :(得分:0)

摘自其他问题:

  

该申请(在KCL的帮助下)将继续民意调查“Shard   迭代器“在后台,因此您将收到有关新的通知   数据来了。

来源:https://stackoverflow.com/a/35582161/1622134

而且,“worker”是指应用程序中的“Worker”线程;这是一个可运行的。

  

每个分片只由一个KCL工作人员处理,并且只有一个   相应的记录处理器,所以你永远不需要多个实例   处理一个碎片。请参阅KCL来源中的Worker.java课程。

来源:https://stackoverflow.com/a/34509567/1622134

要回答您的问题,您可以在processRecords实施中解决问题。处理记录时,当且仅当try部分成功时,使用try-catch块并将检查点写入DynamoDB。那样;如果写入外部数据库时出错,则不会丢失记录并重新启动。您还应该将这些记录数据(无法插入数据库中)保存到其他地方以便稍后处理。

另请参阅此答案:https://stackoverflow.com/a/32517002/1622134