什么是Apache Kafka主题名称限制?

Vas*_*iak 40 apache-kafka

我刚刚尝试创建一个Kafka主题,"user:created"并在Kafka日志中看到了这个错误:Invalid character ':' in value part of property.我用谷歌搜索,发现在邮件列表中,人们也在谈论弃用._符号.

哪些符号不能在Apache Kafka主题名称中使用?

Nat*_*lia 55

根据 kafka 10的源代码

val legalChars = "[a-zA-Z0-9\\._\\-]"
private val maxNameLength = 255
private val rgx = new Regex(legalChars + "+")
Run Code Online (Sandbox Code Playgroud)

因此,最大长度为255个符号,字母,.(点),_(下划线),-(减号)可以使用

在Kafka 0.10中,maxNameLength从255更改为249.请参阅commit

在Kafka 0.11类中,Topic被移至内部包

  • 从提交中,主题名称限制为249:"每个分片分区日志都放在Kafka日志目录下的自己的文件夹中.此类文件夹的名称由主题名称,附加短划线( - )和分区ID.由于典型的文件夹名称长度不能超过255个字符,因此主题名称的长度会受到限制.我们假设分区数量不会超过100000.因此,主题名称不能超过249这留下了短划线的文件夹名称和可能的5位长分区ID的足够空间" (3认同)
  • 嗨@phreed,有没有办法摆脱这个“烦人的”警告?请不要告诉我不要使用下划线,因为我想将它们用于“可读性”目的;-) (3认同)
  • 截至 2022 年 6 月 16 日,上述所有限制似乎均相同。查看移动的源代码:https://github.com/apache/kafka/blob/a126e3a622f2b7142f3543b9dbee54b6412ba9d8/clients/src/main/java/org/apache/kafka/common/internals/Topic.java (3认同)
  • “。” 允许使用'_',但应将其视为相同的字符。“警告:由于度量标准名称的限制,带有句点('。')或下划线('_')的主题可能会发生冲突。为避免出现问题,最好同时使用其中之一,但不能同时使用。 (2认同)