我无法在最新版本的kafka 0.10和0.11中找到SimpleConsumer支持。在以下用例中使用高级消费者是否合适:
使用案例:我想手动控制每个主题的偏移量并保存在外部源中。
高级消费者的问题是上述用例: 当我做民意调查时,
1)我能够收到消息,但我无法控制要读取的消息数量。
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()
的最大记录数