Kafka:什么是新API kafka.utils.ZkUtils从0.8升级到2.1

问题描述 投票:0回答:1

我试图在学术项目中升级Kafka,并发现这个类在0.8中被Kafka 2.1弃用

我正在寻求帮助。

ZKUtils被弃用的地方。

synchronized public void createTopicInZk (HETopic heTopic, int numPartitions, int replicationFactor)
{
    ZkClient zkClient = getNewZkClient();

    try {
        AdminUtils.createTopic(zkClient,
                heTopic.getCompositeTopic(),
                numPartitions,
                replicationFactor,
                new Properties()
        );
    } finally {
        if (zkClient != null) zkClient.close();
    }
}

然后我看到错误,比如期待ZkUtil而不是ZKClient(AdminUtils.createTopic的第一个参数)

所以改成了代码

synchronized public void createTopicInZk (HETopic heTopic, int numPartitions, int replicationFactor)
{
    ZkClient zkClient = getNewZkClient();
    **ZkUtils zkUtils = ZkUtils.apply(zkClient, false);**

    try {
        AdminUtils.createTopic(zkUtils,
                heTopic.getCompositeTopic(),
                numPartitions,
                replicationFactor,
                new Properties()
        );
    } finally {
        if (zkClient != null) zkClient.close();
    }
}

此解决方案有效但我在运行时收到ZkUtils已弃用的警告消息。 ZKUtils的新替代品是什么?

apache-kafka upgrade
1个回答
0
投票

你不应该使用AdminUtilsZkUtils类。这些是内部类,而不是public APIs的一部分。使用内部类会使您面临这样的情况,即由于某些Kafka内部更改而导致代码中断。

但是我理解,使用Kafka 0.9时,没有支持此功能的公共API。然而事实并非如此!

现在您应该使用AdminClient API创建主题,请参阅createTopics()

© www.soinside.com 2019 - 2024. All rights reserved.