[英]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.