是否可以按保留时间过滤Apache Kafka消息?

时间:2017-11-14 15:07:25

标签: apache-kafka retention

从抽象的角度来看,Apache Kafka将数据存储在主题中。这些数据可以由消费者阅读。

我希望有一个(监视器) - 消费者,它可以抓住一定年龄的数据。监视器应向子系统发送警告,表示记录仍未读取,如果卡夫卡达到保留时间,将被Kafka丢弃。

直到现在我还找不到合适的方式。

1 个答案:

答案 0 :(得分:2)

您可以使用KafkaConsumer.offsetsForTimes()将消息映射到日期。

例如,如果您使用昨天的日期调用它并返回偏移量X,则任何偏移量小于X的消息都比昨天早。

然后,如果您有丢弃未处理记录的风险,您的逻辑可以从消费者的当前位置中找出答案。

请注意,目前正在讨论KIP,以公开指标来跟踪:https://cwiki.apache.org/confluence/display/KAFKA/KIP-223+-+Add+per-topic+min+lead+and+per-partition+lead+metrics+to+KafkaConsumer

http://kafka.apache.org/10/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#offsetsForTimes-java.util.Map-