2017-10-06 86 views
0

對主題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 

回答

0

當與--describe運行,kafka-topics接受針對--topic參數一個正則表達式。在正則表達式中,.匹配任何字符,以便您看到預期的行爲。

也就是說,卡夫卡主題創建具有點或下劃線的話題時,應該阻止創建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. 

你是如何創建的主題?

+0

感謝您的回答Mickael。運行我的原始命令命令並更改時。因爲[。]我得到了我需要的東西。 – Mrk

+0

要回答你的問題Mickael。我們從命令行和編程創建主題​​(我們有auto.create.topics.enable = true)。有很多人使用該系統,因此使用不同的主題名稱... – Mrk

0

首先,它不是bug。根據在主題部分Kafka-source卡夫卡-10.2的源代碼,烏爾主題名稱的

val legalChars = "[a-zA-Z0-9\\._\\-]" 
    private val maxNameLength = 249 
    private val rgx = new Regex(legalChars + "+") 

最大lenght可以是249點的話,它的治療點(。)和下劃線(_)被處理equal.That是我們的主題名稱

my.topic.test,my.topic_test,my_topic.test是相同的 。你應該使用(_)下劃線或點(。)而不是兩者。

最佳實踐我會推薦你​​使用連字符( - )就像我preffer使用。