Kafka描述主题命令列出多个主题描述

时间:2017-10-06 13:26:02

标签: apache-kafka

在主题my.topic.test上运行以下命令会对my.topic.testmy.topic_test(注意名称中的点和下划线差异)主题进行说明。
是期望的行为还是错误(我会倾向于错误)?

kafka-topics --describe --zookeeper my_zookeeper_ip:2181 --topic my.topic.test
Topic:my.topic.test        PartitionCount:4        ReplicationFactor:1     Configs:
    Topic: my.topic.test       Partition: 0    Leader: 2       Replicas: 2     Isr: 2
    Topic: my.topic.test       Partition: 1    Leader: 3       Replicas: 3     Isr: 3
    Topic: my.topic.test       Partition: 2    Leader: 4       Replicas: 4     Isr: 4
    Topic: my.topic.test       Partition: 3    Leader: 0       Replicas: 0     Isr: 0
Topic:my.topic_test        PartitionCount:5        ReplicationFactor:4     Configs:
    Topic: my.topic_test       Partition: 0    Leader: 4       Replicas: 3,4,5,1       Isr: 4,1,3
    Topic: my.topic_test       Partition: 1    Leader: 4       Replicas: 1,3,4 Isr: 4,1,3
    Topic: my.topic_test       Partition: 2    Leader: 4       Replicas: 4,2,5,3       Isr: 4,3,2
    Topic: my.topic_test       Partition: 3    Leader: 4       Replicas: 5,1,4 Isr: 4,1
    Topic: my.topic_test       Partition: 4    Leader: 1       Replicas: 5,1,3,0       Isr: 1,0,3

2 个答案:

答案 0 :(得分:0)

使用--describe运行时,kafka-topics接受--topic参数的正则表达式。在正则表达式中,.匹配任何字符,以便您看到预期的行为。

也就是说,kafka-topics在创建带有点或下划线的主题时会发出警告,并且应该阻止创建2个具有指标碰撞的名称的主题:

WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.

您是如何创建主题的?

答案 1 :(得分:0)

首先,它不是bug。根据主题部分Kafka-source中的kafka-10.2的源代码,

  val legalChars = "[a-zA-Z0-9\\._\\-]"
  private val maxNameLength = 249
  private val rgx = new Regex(legalChars + "+")
你的主题名称的最大长度可以是249个单词,它的对待点(。)和下划线(_)被视为相等。这是你的主题名称

  

my.topic.test,my.topic_test,my_topic.test是一样的   。你应该使用(_)下划线或点(。)而不是两者。

为了获得最佳实践,我建议您使用连字符( - ),就像我预先使用一样。