Можно ли создавать темы, которые уже существуют в KafkaJS?
Ситуация
Я динамически создаю серию тем с помощью KafkaJS и обнаружил, что для этого, не создавая проблем с выборами, я должен использоватьcreateTopics
функция администратора.
Проблема в том, что если createTopics
вызывается по уже существующей теме, он не просто возвращает false
(как указано в документации), но также выдает сообщение об ошибке "Тема с таким именем уже существует".
{"level":"ERROR","timestamp":"2020-08-24T18:19:48.465Z","logger":"kafkajs","message":"[Connection] Response CreateTopics(key: 19, version: 2)","broker":"localhost:9092","clientId":"tv-kitchen","error":"Topic with this name already exists","correlationId":2,"size":86}
Вопрос
Я понимаю, что эта ошибка возникает прямо из протокола Kafka, но меня беспокоит, потому что, ну, ошибки - это ошибки.
Безопасно ли мне бежать? createTopics
даже если это может вызвать риск создания темы, которая уже существует, или мне также нужно выполнить какую-то обработку ошибок?
Если это безопасно, можно ли заглушить эту ошибку, поскольку в конечном итоге это шум?
1 ответ
но при этом также появляется сообщение об ошибке "Тема с таким именем уже существует".
Это сообщение журнала.
С точки зрения KafkaJS, он регистрирует ответ от Kafka, который по праву возвращает код (ошибку), указывающий на то, что тема существует.
KafkaJS затем переводит ответ в задокументированный false
значение, возвращенное из createTopics
вызов.
Безопасно ли для меня запускать createTopics, даже если это может создать риск создания уже существующей темы, или мне также нужно выполнить некоторую обработку ошибок?
Для вас безопасно попытаться создать тему, которая уже существует, и вы несете ответственность в приложении, чтобы обработать случай получения false
результат из createTopics
- наверное, ничего не делая:)
Если это безопасно, можно ли заглушить эту ошибку, поскольку в конечном итоге это шум?
Вы можете настроить ведение журнала для KafkaJS, так что да, вы не можете регистрировать это сообщение на стороне вашего приложения.