Кафка: Что такое новый API kafka.utils.ZkUtils Обновление с 0.8 до 2.1 - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь обновить 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?

1 Ответ

0 голосов
/ 21 марта 2019

Вы не должны использовать классы AdminUtils или ZkUtils. Это внутренние классы и не являются частью открытых API . Использование внутренних классов подвергает вас таким ситуациям, когда вы нарушаете код из-за внутренних изменений Kafka.

Однако я понимаю, что с Kafka 0.9 не было публичных API, поддерживающих эту функцию. Однако это уже не так!

Теперь вы должны использовать AdminClient API для создания тем, см. createTopics()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...