gpt4 book ai didi

java - 卡夫卡 : What happens when the connection is interrrupted before consumer finishes reading from a topic?

转载 作者:行者123 更新时间:2023-12-01 17:46:22 25 4
gpt4 key购买 nike

如果消费者开始阅读某个主题,但在消费者读完之前互联网连接就断开了,会发生什么情况?有关该主题的消息是否仍然存在? Kafka如何处理这种场景?

最佳答案

通常,队列使用者会跟踪显式的确认。也就是说,消费者说“谢谢,我已经处理了”,服务器说“不客气”。

Kafka 通过存储偏移量来处理此问题。偏移量是消费者在流中的位置。例如,假设我有一个包含四个元素的流。

A, B, C, D

位置一是A ,因此消费者的偏移量为 0会拉A 。一旦他们处理完A ,他们会将偏移量更新为 1 。通常的做法是将其存储在经纪人端的 __consumer_offsets 中。主题。

当它们的偏移量变为1时,他们得到下一个,即 B 。他们处理并增加__consumer_offsets中的偏移量。主题,2.依此类推。

那么在读取过程中中断会发生什么?

在此中断期间需要考虑的事件时间表:

  1. 使用者根据偏移量请求主题中的下一个项目。
  2. 消费者开始阅读主题中的下一项。
  3. 消费者读完主题中的项目。
  4. 使用者处理主题中的项目。
  5. 消费者更新其在 __consumer_offsets 中的偏移量主题。
  6. 返回 1。

之前(含) 4 发生的任何错误将导致简单的重新请求和重新处理。这意味着如果您的消费者是有状态的,您将需要处理正在处理一半的内容。

4之后发生的错误已完成但5未完成将不会导致重新处理。相反,它将重新建立连接,更新偏移量并处理下一个项目。

关于java - 卡夫卡 : What happens when the connection is interrrupted before consumer finishes reading from a topic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com