Это очевидный костыль) Вопрос в другом. Что я в коде делаю не так?
"правильно" - распределенный лок для создания ресурсов либо создавать топики отдельно, вне приложения с N инстансами
Почему ты так думаешь?
Это не костыль, а правильное решение, с учётом того, как работают клиенты. Ты спрашиваешь про топик у того брокера (1), которому ещё не доехала новая метадата. А создание топика (если не ошибаюсь) всегда к контроллеру роутится (2), поэтому и получается ситуация, что вроде бы и топика ещё нет (1), но создание падает с TopicAlreadyExists (2).
У меня в тесте 1 брокер.
Верно ли я тебя понял. Ты говоришь что при создании топика происходит следующее 1. Топик создается на контроллере и имя топика резервируется на всех брокерах (иначе не было бы ошибки TopicAlreadyExists) 2. Метаинформация по топику приходит асинхронно (это является причиной ошибки вызова describe topic). Да?
Самое забавное, что контроллер != брокер. 🙂
В зукипере имя топика прописывается . Все брокеры его тянут от туда и кеширует у себя
Обсуждают сегодня