kafka:当连接在消费者读完某个主题之前被中断时会发生什么?

72qzrwbm  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(225)

如果消费者开始阅读某个主题,那么互联网连接在消费者完成阅读之前就中断了,会发生什么?关于这个主题的信息还保留着吗?Kafka是如何处理这种情况的?

dohp0rv5

dohp0rv51#

通常,队列使用者跟踪显式确认。也就是说,消费者说“谢谢,我已经处理了”,服务器说“不客气”。
Kafka通过存储偏移量来处理这个问题。偏移量是消费者在流中的位置。例如,假设我有一个包含四个元素的流。

A, B, C, D

位置一是 A ,因此具有偏移量 0 将拉动 A . 一旦他们处理完 A ,则会将其偏移量更新为 1 . 通常的做法是将其存储在 __consumer_offsets 主题。
当它们的偏移变为 1 ,他们得到下一个,也就是 B . 它们处理并增加它们的偏移量 __consumer_offsets 主题,2。以此类推。
那么在中断中读期间会发生什么呢?
大修期间需要考虑的事件有一个时间表:
使用者根据其偏移量请求主题中的下一项。
消费者开始阅读主题中的下一项。
消费者阅读完主题中的项目。
使用者处理主题中的项目。
消费者更新其在 __consumer_offsets 主题。
返回1。
之前发生的任何错误,包括 4 将导致简单的重新请求和重新处理。这意味着如果您的消费者是有状态的,您将需要处理半处理的内容。
之后发生的错误 4 已完成,但 5 未完成将不会导致重新处理。相反,它将重新建立连接,更新偏移量并处理下一项。

相关问题