簡體   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