SimpleConsumer会在即将推出的Kafka版本中折旧吗?将高级消费者用于手动偏移控制会不会很好?

时间:2017-11-01 07:29:29

标签: apache-kafka kafka-consumer-api

我无法在最新版本的kafka 0.10和0.11中找到SimpleConsumer支持。在以下用例中使用高级消费者是否合适:

使用案例:我想手动控制每个主题的偏移量并保存在外部源中。

高级消费者的问题是上述用例: 当我做民意调查时,

1)我能够收到消息,但我无法控制要读取的消息数量。

2)我无法决定何时停止轮询,即我对批量大小的定义。

2 个答案:

答案 0 :(得分:0)

KafkaConsumer类设置max.poll.records,指定可获取的最大记录数 - 默认情况下,没有限制。 KafkaConsumer还允许您手动控制偏移量,并将它们存储在您想要的位置。 “Kafka:The Definitive Guide”一书(可以从汇合网站免费获得)有很多关于这些主题的内容。

答案 1 :(得分:0)

您可以通过设置“enable.auto.commit”,“false”手动控制偏移量,只有在应用程序明确选择时才会提交偏移量。

<强> consumer.commitSync();

API将提交poll()返回的最新偏移量,并在提交偏移量后返回,如果由于某种原因提交失败,则抛出异常。

如果您希望通过明确指定偏移量来更好地控制已提交的消息。

public void commitSync(java.util.Map<TopicPartition,OffsetAndMetadata> offsets)

为指定的主题和分区列表提交指定的偏移量。

这是一个同步提交,将阻塞,直到提交成功或遇到不可恢复的错误(在这种情况下,它会被抛给调用者)。

max.poll.records =&gt;控制一次调用poll()

的最大记录数