当前位置: 首页 > 知识库问答 >
问题:

Kinesis客户端库记录处理器故障

翟新
2023-03-14

根据AWS文件:

worker使用Java ExecutorService任务调用记录处理器方法。如果任务失败,工作进程将保留对记录处理器正在处理的碎片的控制。工作进程启动一个新的记录处理器任务来处理该碎片。有关详细信息,请参阅阅读节流。

根据AWS文件的另一页:

Kinesis客户端库(KCL)依靠您的进程记录代码来处理处理数据记录时出现的任何异常。从进程记录抛出的任何异常都被KCL吸收。为了避免对重复出现的故障进行无限重试,KCL不会重新发送在异常时处理的一批记录。然后,KCL会调用进程记录以获取下一批数据记录,而无需重新启动记录处理器。这有效地导致消费者应用程序观察跳过的记录。为了防止跳过的记录,请适当处理进程记录中的所有异常。

这两种说法不矛盾吗?一个说记录处理器重新启动,另一个说碎片被跳过。当一个记录处理器出现故障时,KCL究竟做什么?KCL员工如何知道记录处理器是否出现故障?

共有1个答案

傅恺
2023-03-14

根据我编写、调试和支持基于KCL的应用程序的经验,第二条语句对于描述应该如何考虑错误处理更为清晰/准确/有用。

首先,一点背景知识:

  • KCL记录处理设计为从多个主机运行。假设您有3台主机和12个碎片要处理-每个主机运行一个工作进程,并且将拥有4个碎片的处理

第一条语句试图(不太清楚)说明当KCL任务失败时,该工作人员实例将保持对其处理的分片的控制(而不是将它们转移给另一个工作人员)。

 类似资料:
  • 我使用camel和cxf组件从Web服务中获取一些数据。在某些情况下,Web服务返回标准的soap:fault。我有下一个步骤: 阅读cxf和camel邮件列表中的类似问题,我理解cxfendpoint应该抛出异常,如果有soap foalt,org.apache.cxf.binding.soap.soapfault类型的异常,但我不能得到它。onException子句的目标是处理soap错误异常

  • 我在一个独立的java应用程序中使用apache cxf client 3.2.2来调用一些soap Web服务。 试图在单向操作中获取soap故障代码和故障字符串,但没有成功。 我定义了一个自定义拦截器,但它永远不会到达handleMessage 定制拦截器的代码 } 我遇到的异常是MessageSenderEndingInterceptor(处于PREPARE\u SEND阶段)。 它正在抛出

  • 为什么我发现KCL与AWS Lambda一起使用的例子如此之少。https://docs.aws.amazon.com/streams/latest/dev/developing-consumers-with-kcl.html 它确实提供了一个很好的实现来跟踪您在流中的位置(检查点)。 我想使用KCL作为消费者。我的设置是一个具有多个碎片的流。每个碎片上都有一个Lambda在消耗。我想使用Lamb

  • 我正在使用apache CXF(Spring启动)来开发我的肥皂服务器。在这里,我需要在我的肥皂故障拦截器中记录故障消息,就像在任何肥皂客户端中显示的那样(例如:肥皂UI)。我如何在我的故障拦截器中记录相同的输出?现在它只是显示异常详细信息 输入 输出(在肥皂客户端中显示) UserNotfindException是代码中抛出的自定义异常 我的定制拦截器代码

  • 问题内容: 我正在使用php,mysql进行搜索,过滤操作。 我的分页课程是 我已经使用以下复选框执行了过滤器: 过滤器的Javascript / ajax代码 process.php文件 我返回分页的结果,但是当我单击页码时,将我带到process.php,因为分页类使用 $ _SERVER [PHP_SELF] 如何在不更改页面url的情况下对结果进行分页,即使用ajax实施。我不能做太多更改

  • 0927,美团二面,1h 1. 自我介绍 2. 深挖项目 1. SwiftUI 怎么样,和 UIKit 比如何,你是怎么学的 Swift,有没有做方案的选型 2. 动画如何实现(自己瞎掰头,他说差不多是这个意思) 3. 序列化怎么做的 4. 网络库用的什么 5. iOS 这边 MVVM,APNs 怎么做的 3. 有没有了解过一些其他的移动端框架,Flutter 画点粒度做 UI 4. 实验室项目