增加java中一个主题的分区数

igsr9ssn  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(314)

我使用的名称:Kafka2.12版本:2.3.0。根据流量/负载,我想更改一个主题的最大分区数。一旦Kafka出现,有没有可能做出这样的改变,可以通过代码来完成?

pjngdqdw

pjngdqdw1#

是的,您可以通过代码增加分区。使用adminclient.createpartitions方法。
adminclients.createpartitions方法api文档

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

根据相应的值增加作为newpartitions键的主题的分区数。如果为具有键的主题增加分区,则分区逻辑或消息顺序将受到影响。
此操作不是事务性的,因此可能对某些主题成功,而对其他主题失败。
此方法返回success之后,所有代理可能需要几秒钟才能意识到分区已经创建。在此期间,describetopics(集合)可能不会返回有关新分区的信息。
使用方法:

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();
}

相关问题