java - Kafka 如何存储每个主题的偏移量?

标签 java apache-kafka kafka-consumer-api

在轮询 Kafka 时,我使用 subscribe() 函数订阅了多个主题。现在,我想设置我想要从每个主题读取的偏移量,而不是在每个主题的 seek()poll() 之后重新订阅。在轮询数据之前对每个主题名称迭代调用seek() 是否会获得结果? Kafka 中如何准确存储偏移量?

每个主题我有一个分区,只有一个消费者可以读取所有主题。

最佳答案

How does Kafka store offsets for each topic?

Kafka 已经将 offset 存储从 zookeeper 转移到 kafka brokers。原因如下:

Zookeeper is not a good way to service a high-write load such as offset updates because zookeeper routes each write though every node and hence has no ability to partition or otherwise scale writes. We have always known this, but chose this implementation as a kind of "marriage of convenience" since we already depended on zk.

Kafka 将偏移量提交存储在主题中,当消费者提交偏移量时,kafka 将提交偏移量消息发布到“提交日志”主题,并保留将组/主题/分区映射到最新偏移量的内存结构用于快速检索。在此 page about offset management 中可以找到更多设计信息.

Now, I want to set the offset from which I want to read from each topic, without resubscribing after every seek() and poll() from a topic.

kafka 管理工具有一个新功能可以重置偏移量。

kafka-consumer-group.sh --bootstrap-server 127.0.0.1:9092 --group
      your-consumer-group **--reset-offsets** --to-offset 1 --all-topics --execute

more options you can use .

关于java - Kafka 如何存储每个主题的偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45686885/

相关文章:

java - 从 JTabbedPane 中删除选项卡时,Canvas3D 选项卡正确停止渲染

java - 使用 Java 参数化类型和多态性实现这种通用编程场景的方法

performance - Kafka : is it better to have a lot of small messages or fewer, 但更大的?

apache-kafka - Kafka - 处理消费者缓慢的最佳实践。如何实现更多的并行性?

apache-kafka - 合并kafka流中的记录

apache-kafka - 卡夫卡消费者 : Want to read same message again if not committed previous messages offset and auto commit is disabled

java - 仅限 Android 共享 Intent 选择器电子邮件客户端

java - 使用 Lambda 方法简化事件在 Java 中不起作用

java - Kafka AvroSchema 未生成,当一个类具有数据类型为对象类的字段时

ssl - 如何在关闭 TLS 对等验证的情况下使用 Kafka