【问题标题】:how to consume previous messages in apache kafka如何在 apache kafka 中使用以前的消息
【发布时间】:2019-01-14 03:43:53
【问题描述】:

我想从主题中读取特定消息。例如,主题中有 12000 条消息,我只想阅读 2000 到 5000 条。卡夫卡有什么规定吗?或者我可以使用 java 消费者代码从主题中读取特定消息吗?

【问题讨论】:

  • 这些任意数字是否只是单个分区的一部分?没有主题的“2000到5000”的概念,只有一个内的分区

标签: java apache-kafka kafka-consumer-api


【解决方案1】:

Java 消费者 API 为您提供“搜索”方法,更具体地说,提供以下方法

seek(TopicPartition partition, long offset)

您可以指定从提供的偏移量开始读取消息,但不能提供结束偏移量。另一件事是指定偏移量与分区更相关,因此,您必须提供TopicPartition 作为第一个参数。

考虑如果主题分区被压缩和/或一些消息被删除,偏移量不再是连续的,所以你可能会有一些漏洞。因此,如果您想从偏移量为 2000 的消息读取到偏移量为 5000 的消息,或者您想从第 2000 条消息读取到第 5000 条消息(在这种情况下,序数位置可能不等于偏移量,即第 2000 条消息在偏移量 2100 处,因为在它之前有 100 条消息被删除)。

【讨论】:

  • 有没有办法获取范围内的消息?
  • 没有使用提供的 API 的自动方式。处理这种情况是应用程序的责任。
  • @omi 你总是可以只计算轮询循环中的消息数量并检查它们来自哪个偏移量
  • 正如 Kafka 所做的那样,我们配置的消息会持续一段时间。因此,如果我使用来自主题的每条消息,并且如果我向该主题添加新的消费者,它是否能够将这些消息视为新消息并能够使用它们。请确认。谢谢!
  • 如果当前消费组仍然处于活动状态,则它必须是不同消费组中的消费。您可以从头开始阅读主题。
猜你喜欢
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2019-12-21
  • 2018-02-08
  • 1970-01-01
  • 2021-01-14
相关资源
最近更新 更多