我需要使用Java API将Kafka生产者偏移值与使用者偏移量相匹配吗?
我是KAFKA的新手,有人可以建议如何继续这个吗?
答案 0 :(得分:0)
根据您的确切使用案例,您可以采用以下几种方式,但所有这些方法都需要外部系统。
首先,Confluent提供Confluent Control Center作为其商业产品的一部分,如果您愿意花钱,这可能是最简单的方法。
如果不适合您,那么您需要实施某种系统来跟踪您生产的产品和消费的产品。例如,您可以简单地使用数据库,将主题,分区和偏移量作为主键,并具有generated_at和consume_at的列。 每次生产者将消息写入群集时,您都会更新generated_at列(请查看ProducerInterceptor)。在消费者方面,您可以实现一个拦截器,该拦截器确认已经读取了消息,或者一旦成功处理就从消费者本身确认。
或者,如果您不需要确认每条消息,您可以只对每10k条消息或类似消息执行常规检查点,并相信消费者会读取所有内容,直到它确认的最后一个偏移量。
还有可能在常规的intervalls中将检查点消息注入流中,当消费者看到其中一个触发动作时 - 再次,你必须相信消费者它在检查点之间获得了一切
正如我最初所说,这完全取决于您的确切用例,如果您向我们提供更多详细信息,我们确信我们能够提出适合您的内容。
更新:
如果要在向Kafka发送消息后检索偏移量,则需要检查生产者在发送时返回的Future,这将包含偏移量。
resolve()
答案 1 :(得分:0)
您可以通过Java Management Beans公开生产者和消费者的偏移量。您可以使用随JDK提供的JConsole实时进行比较。
阅读关于如何公开生产者和消费者的偏移位置的Gauge。