1

情况

我正在使用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即使可能会冒着创建已经存在的主题的风险,我运行是否安全,或者我是否还需要进行某种类型的错误处理?

如果它是安全的,是否可以消除该错误,因为它最终是噪音?

4

1 回答 1

2

但它也会发出一条错误消息,指出“具有此名称的主题已存在”。

这是一条日志消息。

从 KafkaJS 的角度来看,它记录了来自 Kafka 的响应,该响应正确地返回了一个(错误)代码,表明该主题存在。

然后,KafkaJS 将响应转换为调用false返回的记录值。createTopics

运行 createTopics 对我来说是否安全,即使它可能会冒着创建已经存在的主题的风险,或者我是否还需要进行某种类型的错误处理?

尝试创建一个已经存在的主题对您来说是安全的,并且您在应用程序中负责处理获取false结果的情况createTopics——可能完全不做任何事情:)

如果它是安全的,是否可以消除该错误,因为它最终是噪音?

您可以为 KafkaJS 配置日志记录,所以是的,您无法在应用程序端记录此消息。

于 2020-08-25T10:18:07.757 回答