如何多次使用主题中的消息

时间:2018-05-08 04:30:04

标签: java apache-kafka

我有生产者,我打电话给Kafka并将记录发布到Kafka,然后我打电话给消费者,该消费者返回记录,但是当我再次呼叫消费者时,消费者不会返回任何记录。 (我需要得到我再次发给卡夫卡的记录)。我该怎么做?(任何代码都将不胜感激)

3 个答案:

答案 0 :(得分:1)

Kafka在消费后不会删除该消息。但它保留了任何消费者阅读的抵消。因此,在您从中读取消息后,偏移量将继续。第二次读取没有读取任何内容,因为在您的唯一消息之后的偏移点并且之后没有任何内容。您应该在再次阅读之前尝试重置偏移量。看这篇文章:

Reset consumer offset to the beginning from Kafka Streams

但是如果您不想在本地或全局重置,您可以创建另一个消费者群组,因为每个消费者群体都有自己的偏移量,新消费者的第二次阅读可以达到您想要的效果。看到这个链接:

kafka-tutorial-kafka-consumer

希望这会有所帮助。

答案 1 :(得分:0)

您可以手动将偏移重置为所需的偏移量,或者如果您需要从起始偏移量消费者(kafka中可用的任何内容),则可以设置消费者属性“auto.offset.reset = earliest”

答案 2 :(得分:0)

您还可以每次为消费者属性提供新的group.id值。只需生成一个随机字符串值。必须将属性auto.offset.reset设置为earliest