gpt4 book ai didi

java - 如何验证Kafka中分区或主题的大小?

转载 作者:行者123 更新时间:2023-12-02 12:10:35 25 4
gpt4 key购买 nike

我想在 Kafka 中生成记录之前验证分区大小。

我有一个自定义分区类,它为我提供了消息应该放置在其中的确切分区号。

现在我的要求是我想在发送记录之前检查分区的大小。

 List<String> users = userService.findAllUsers();
for (String user : users) {
String msg = "Hello " + user;
//Check size here
producer.send(new ProducerRecord<String, String>(topic, user, msg), new Callback() {
public void onCompletion(RecordMetadata metadata, Exception e) {
if (e != null) {
e.printStackTrace();
}
}
});

kafka 有什么方法可以实现这一点吗?

最佳答案

容量纯粹是 Kafka 代理级别的一个方面。基本上,如果代理的数据目录中有磁盘空间,您就可以传递消息。消息由代理根据时间和分区大小(在代理配置中)进行清理,因此,如果您相应地配置代理,您可能始终有空间 - 旧消息将被丢弃。但它可能不适合您的业务用例。

此外,回应您的评论我们可以检查主题的大小,您实际上可以使用beginningOffsets&来检查分区的当前大小KafkaConsumer 中的 endOffsets 方法。请注意,如果分区不存在(至少在 0.10.2 中),这些方法可能会阻塞。例如当您请求分区 4 的数据时,主题实际上包含 3 个分区。

Kafka 0.11 在客户端引入了管理功能,但仍在进行中。

关于java - 如何验证Kafka中分区或主题的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com