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

kafka流腐败的消息处理语义学

蔚俊人
2023-03-14

我注意到Kafka记录有一个CRC字段。如果日志文件中的记录损坏(例如,消息中间的一个比特被翻转),那么在流应用程序中,我希望看到的是:

  • 该主题被复制

由于我们使用的是Avro,我可以想象以下情况之一:

  • 底层基础设施检测到CRC错误,并从另一个代理获取该错误

共有1个答案

汝飞
2023-03-14

对于CRC错误,当Streams应用程序尝试反序列化记录时,应该在其中引发异常。因此,反序列化异常处理程序开始工作。

在Kafka中,所有的读/写都由分区负责人处理,而跟随者代理只在后台被动地复制数据,不提供任何来自客户端的读/写服务。

 类似资料:
  • 我最近看到了这篇关于Apache Kafka文档的文章,内容涉及如何处理Kafka流中的无序消息 https://kafka.apache.org/21/documentation/streams/core-concepts#streams_out_of_ordering 有人能给我解释一下下面这句话背后的原因吗: 在主题分区中,记录的时间戳可能不会随着它们的偏移量单调地增加。由于Kafka流总是

  • 我们正在应用程序中使用apache kafka streams 0.10.2.0。我们利用kafka streams拓扑将处理后的数据传递到下一个主题,直到处理结束。 此外,我们使用AWS ECS容器来部署消费者应用程序。我们观察到消费者正在拾取非常旧的消息进行处理,尽管它们已经在更早的时候处理过。这个问题在服务扩展/缩减或新部署时随机发生。我知道在消费者重新平衡时,有些消息可以重新处理。但在这种

  • 如果每个Kafka消息属于一个特定的会话,如何管理会话关联,以便同一个Spark执行器看到链接到一个会话的所有消息? 如何确保属于会话的消息被Spark executor按照在Kafka中报告的顺序处理?我们能以某种方式实现这一点而不对线程计数施加限制并导致处理开销(如按消息时间戳排序)吗? 何时检查会话状态?在执行器节点崩溃的情况下,如何从最后一个检查点恢复状态?在驱动程序节点崩溃的情况下,如何

  • 我有一个spring boot应用程序与单个Kafka消费者从一些主题获取消息。但有时在处理消息时会出现错误。 我理解我需要禁用自动提交并手动提交成功的消息,但是,在这种情况下,如果我没有为这个异常情况抛出任何异常,并手动提交每个下一个成功的消息,那么我将丢失前一个不成功的消息,对吗?

  • 使用kafka流处理器api 场景:流处理器(使用kafka流处理器api实现)从源主题读取数据,并基于某些业务逻辑将数据写入目标主题。

  • 流处理和传统消息处理的基本区别是什么?正如人们所说,kafka是流处理的好选择,但本质上,kafka是一个类似于ActivMQ、RabbitMQ等的消息传递框架。 为什么我们通常不说ActiveMQ也适合流处理呢。 消费者消费消息的速度是否决定了它是否是流?