|NO.Z.00033|——————————|BigDataEnd|——|Hadoop&kafka.V18|——|kafka.v18|消费者位移管理.v01|
一、消费者位移管理
### --- 消费者位移管理
~~~ Kafka中,消费者根据消息的位移顺序消费消息。
~~~ 消费者的位移由消费者管理可以存储于zookeeper中也可以存储于Kafka主题__consumer_offsets中。
~~~ Kafka提供了消费者API,让消费者可以管理自己的位移。
二、API如下:KafkaConsumer<K, V>
项目 | 细节 |
API | public void assign(Collection<TopicPartition> partitions) |
说明 | 给当前消费者手动分配一系列主题分区。 手动分配分区不支持增量分配,如果先前有分配分区,则该操作会覆盖之前的分配。 如果给出的主题分区是空的,则等价于调用unsubscribe方法。 手动分配主题分区的方法不使用消费组管理功能。 当消费组成员变了,或者集群或主题的元数据改变了,不会触发分区分配的再平衡。 手动分区分配assign(Collection)不能和自动分区分配subscribe(Collection,ConsumerRebalanceListener)一起使用。 如果启用了自动提交偏移量,则在新的分区分配替换旧的分区分配之前, 会对旧的分区分配中的消费偏移量进行异步提交。 |
API | public Set<TopicPartition> assignment() |
说明 | 获取给当前消费者分配的分区集合。 如果订阅是通过调用assign方法直接分配主题分区,则返回相同的集合。 如果使用了主题订阅,该方法返回当前分配给该消费者的主题分区集合。 如果分区订阅还没开始进行分区分配,或者正在重新分配分区,则会返回none。 |
AIP | public Map<String, List<PartitionInfo>> listTopics() |
说明 | 获取对用户授权的所有主题分区元数据。该方法会对服务器发起远程调用。 |
API | public List<PartitionInfo> partitionsFor(String topic) |
说明 | 获取指定主题的分区元数据。 如果当前消费者没有关于该主题的元数据,就会对服务器发起远程调用。 |
API | public Map<TopicPartition, Long> beginningOffsets(Collection<TopicPartition>partitions) |
说明 | 对于给定的主题分区,列出它们第一个消息的偏移量。 注意,如果指定的分区不存在,该方法可能会永远阻塞。 该方法不改变分区的当前消费者偏移量。 |
API | public void seekToEnd(Collection<TopicPartition> partitions) |
说明 | 将偏移量移动到每个给定分区的最后一个。 该方法延迟执行,只有当调用过poll方法或position方法之后才可以使用。 如果没有指定分区,则将当前消费者分配的所有分区的消费者偏移量移动到最后。 如果设置了隔离级别为: isolation.level=read_committed,则会将分区的消费偏移量移动到最后一个稳定的偏移量, 即下一个要消费的消息现在还是未提交状态的事务消息。 |
API | public void seek(TopicPartition partition, long offset) |
说明 | 将给定主题分区的消费偏移量移动到指定的偏移量, 即当前消费者下一条要消费的消息偏移量。 若该方法多次调用,则最后一次的覆盖前面的。 如果在消费中间随意使用,可能会丢失数据。 |
API | public long position(TopicPartition partition) |
说明 | 检查指定主题分区的消费偏移量 |
API | public void seekToBeginning(Collection<TopicPartition> partitions) |
说明 | 将给定每个分区的消费者偏移量移动到它们的起始偏移量。 该方法懒执行,只有当调用过poll方法或position方法之后才会执行。 如果没有提供分区,则将所有分配给当前消费者的分区消费偏移量移动到起始偏移量。 |
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv013-kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通