常用的幾個命令如下:
- kafka-server-start.sh
- kafka-console-consumer.sh
- kafka-console-producer.sh
- kafka-topics.sh
在這幾個命令中,第一個僅用於啓動Kafka,後兩個console常用於測試,用途最多的是最後一個命令,所以下面命令中主要介紹的就是 kafka-topics.sh。
kafka-server-start.sh
用法:
> bin/kafka-server-start.sh [-daemon] server.properties [--override property=value]*
這個命令後面可以有多個參數,第一個是可選參數,該參數可以讓當前命令以後臺服務方式執行,第二個必須是 Kafka 的配置文件。後面還可以有多個--override開頭的參數,其中的property可以是Broker Configs中提供的所有參數。這些額外的參數會覆蓋配置文件中的設置。
例如下面使用同一個配置文件,通過參數覆蓋啓動多個Broker。
> bin/kafka-server-start.sh -daemon config/server.properties --override broker.id=0 --override log.dirs=/tmp/kafka-logs-1 --override listeners=PLAINTEXT://:9092 --override advertised.listeners=PLAINTEXT://192.168.16.150:9092
> bin/kafka-server-start.sh -daemon config/server.properties --override broker.id=1 --override log.dirs=/tmp/kafka-logs-2 --override listeners=PLAINTEXT://:9093 --override advertised.listeners=PLAINTEXT://192.168.16.150:9093
上面這種用法只是用於演示,真正要啓動多個Broker 應該針對不同的 Broker 創建相應的 server.properties 配置。
kafka-console-consumer.sh
這個命令只是簡單的將消息輸出到標準輸出中,--bootstrap-server
必須指定,通常--topic
也要指定查看的主題。如果想要從頭查看消息,還可以指定--from-beginning
參數。一般使用的命令如下。
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
還可以通過下面的命令指定分區查看:
>> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --partition 0
kafka-console-producer.sh
這個命令可以將文件或標準輸入的內容發送到Kafka集羣。有許多參數,其中 --broker-list
和 --topic
是兩個必須提供的參數。
常用命令如下。
使用標準輸入方式。
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
從文件讀取:
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test < file-input.txt
kafka-topics.sh
相比上面幾個偶爾使用的命令來說,kafka-topics.sh 相對就比較重要。該命令包含以下參數。
下面是幾種常用的 topic 命令。
描述主題的配置
bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type topics --entity-name test_topic
設置保留時間
# Deprecated way
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test_topic --config retention.ms=1000
# Modern way
bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name test_topic --add-config retention.ms=1000
如果您需要刪除主題中的所有消息,則可以利用保留時間。首先將保留時間設置爲非常低(1000 ms),等待幾秒鐘,然後將保留時間恢復爲上一個值。
注意:默認保留時間爲24小時(86400000毫秒)。
刪除主題
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test_topic
注意:需要在Broker的配置文件server.properties中配置 delete.topic.enable=true 才能刪除主題。
主題信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test_topic
添加分區
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic test_topic --partitions 3
創建主題
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic test_topic
列出主題
bin/kafka-topics.sh --list --zookeeper localhost:2181