首页 > 解决方案 > Kafka 消费者在第二次通话时返回空

问题描述

我向Kafka生产者插入一条记录,然后调用消费者返回插入的元素(和先前插入的元素),然后我再次调用客户(不向生产者插入新记录)消费者不返回任何记录。

据我所知,记录应该保留在主题中。我不知道如何在属性中将确认设置为 false。这个问题与确认有关吗?

标签: javaapache-kafka

解决方案


消费者只会收到“新”消息。如果您之前已经阅读到主题结束并且没有任何新内容,那么您将一无所获。

如果您想从主题的开头再次阅读,则必须“倒带”消费者(或创建一个新消费者)。

我不知道如何在属性中将确认设置为 false(这个问题与确认有关吗?)

如果您使用消费者组,消费者的偏移量(每个主题分区读取的距离)将存储在 Kafka(或旧版本的 Zookeeper)中。您可以通过确认(或不确认)收到消息来控制这一点。但是,这仅在消费者重新启动时有效,而不是对已经运行的实例。

如果您不使用消费者组,则此偏移跟踪完全在消费者实例本身内完成。


推荐阅读