繁体   English   中英

在 Java 中增加一个主题的分区数

[英]Increase number of partitions for a topic in Java

我正在使用名称: kafka_2.12版本: 2.3.0 根据流量/负载,我想更改主题的最大分区号。 卡夫卡启动后是否可以进行这种更改并且可以通过代码完成?

是的,您可以通过代码增加分区。 使用AdminClient.createPartitions 方法。

AdminClients.createPartitions 方法 API 文档

public abstract CreatePartitionsResult createPartitions(java.util.Map<java.lang.String,NewPartitions> newPartitions,CreatePartitionsOptions options)

根据对应的值增加作为 newPartitions 的键给定的主题的分区数。 如果为具有键的主题增加分区,则分区逻辑或消息的顺序将受到影响。

此操作不是事务性的,因此它可能对某些主题成功,而对另一些主题则失败。

在此方法返回成功后,所有代理可能需要几秒钟才能意识到已创建分区。 在此期间,describeTopics(Collection) 可能不会返回有关新分区的信息。

如何使用:

public static void createPartitions(String topicName, int numPartitions) {
    Properties props = new Properties();
    props.put("bootstrap.servers","localhost:9092");
    AdminClient adminClient = AdminClient.create(props);

    Map<String, NewPartitions> newPartitionSet = new HashMap<>();
    newPartitionSet.put(topicName, NewPartitions.increaseTo(numPartitions));
    adminClient.createPartitions(newPartitionSet);
    adminClient.close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM