У меня проблема с темами, созданными с использованием AdminClient createTopics
.В моем приложении у меня есть следующая последовательность:
- создать новую тему с 1 разделом, коэффициент репликации установлен в 1, используя
AdminClient.createTopics
- ожидание
AdminClient.createTopics
KafkaFuture
результат - немедленно отправить новое сообщение во вновь созданную тему (обычно время между операциями 2 и 3 составляет около 200 миллисекунд).
Мой код выглядит следующим образом:
adminClient
.createTopics(Collections.singleton(new NewTopic(targetTopic, 1, (short) 1)))
.values()
.get(targetTopic)
.get();
producer.send(new ProducerRecord<>(targetTopic, data));
Время от времени производитель не видит созданную тему и выдает следующее исключение:
[Producer clientId = provider-1] Ошибка при получении метаданных с идентификатором корреляции 5: {targetTopic = UNKNOWN_TOPIC_OR_PARTITION}
[Producer clientId = provider-1] Получена неизвестная тема или ошибка раздела в запросе на создание раздела targetTopic.Тема / раздел может не существовать или у пользователя может не быть доступа Описать к нему
Эта проблема очень редкая (<0,1% всех созданных тем). </p>
Это так?гарантируется, что когда AdminClient.createTopics
будущее Кафки будет завершено, тема будет создана, и производитель Кафки должен увидеть эту тему?Если нет, то какой метод создания темы может дать мне такую гарантию?
Я использую kafka-клиенты: 2.0.0 и службу Kafka HD на Azure.Мой кластер состоит из 3 узлов Zookeeper и 3 узлов Kafka.