【发布时间】:2019-01-14 03:43:53
【问题描述】:
我想从主题中读取特定消息。例如,主题中有 12000 条消息,我只想阅读 2000 到 5000 条。卡夫卡有什么规定吗?或者我可以使用 java 消费者代码从主题中读取特定消息吗?
【问题讨论】:
-
这些任意数字是否只是单个分区的一部分?没有主题的“2000到5000”的概念,只有一个内的分区
标签: java apache-kafka kafka-consumer-api
我想从主题中读取特定消息。例如,主题中有 12000 条消息,我只想阅读 2000 到 5000 条。卡夫卡有什么规定吗?或者我可以使用 java 消费者代码从主题中读取特定消息吗?
【问题讨论】:
标签: java apache-kafka kafka-consumer-api
Java 消费者 API 为您提供“搜索”方法,更具体地说,提供以下方法
seek(TopicPartition partition, long offset)
您可以指定从提供的偏移量开始读取消息,但不能提供结束偏移量。另一件事是指定偏移量与分区更相关,因此,您必须提供TopicPartition 作为第一个参数。
考虑如果主题分区被压缩和/或一些消息被删除,偏移量不再是连续的,所以你可能会有一些漏洞。因此,如果您想从偏移量为 2000 的消息读取到偏移量为 5000 的消息,或者您想从第 2000 条消息读取到第 5000 条消息(在这种情况下,序数位置可能不等于偏移量,即第 2000 条消息在偏移量 2100 处,因为在它之前有 100 条消息被删除)。
【讨论】: