topic是kafka的生產(chǎn)者和消費者最小交互的單位,我們先從topic入手账嚎,創(chuàng)建第一個topic.
-
進(jìn)去kafka的bin目錄我們發(fā)現(xiàn)有個kafka-topics.sh腳本
image.png
1.創(chuàng)建topic
- 官方推薦如果kafka版本大于等于2.2使用--bootstrap-server替代--zookeeper (2.2以上也兼容--zookeeper)命令如下
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytest
- 如果kafka版本小于2.2則命令如下
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mytest
參數(shù)解釋
- 1.指定kafka集群(2.2以上)或zookeeper集群
--bootstrap-server node1:9092,node2:9092,node3:9092....
或
--zookeeper node1:2181,node2:2181,node3:2181...
- 2.指定分區(qū)數(shù)
--partitions
- 3.指定分區(qū)的副本數(shù)
--replication-factor
所以執(zhí)行上面命令將會創(chuàng)建一個名為mytest的topic莫瞬,該topic下面有1個分區(qū),并且該分區(qū)只有1個副本。
PS:除了手動創(chuàng)建主題外郭蕉,還可以將代理配置為在發(fā)布不存在的主題時自動創(chuàng)建主題
2.查看topic
- 查看指定的topic
kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic mytest
image.png
Partition:0 表示該分區(qū)的id為0
leader: 9 表示分區(qū)的首領(lǐng)副本所在的broker(本例子中broker.id配置為9,所以這里顯示9,具體在config/server.properties配置疼邀。這里只有一個分區(qū),所以首領(lǐng)分區(qū)也就是自己)
Replicas: 9 表示分區(qū)的跟隨副本所在的broker
Isr: 9 表示分區(qū)的同步副本所在的broker(同步副本可以認(rèn)為跟首領(lǐng)副本準(zhǔn)實時同步的副本召锈,可以配置判斷條件旁振,后面會講,首領(lǐng)副本掛掉后涨岁,服務(wù)器會從同步副本中選舉新的首領(lǐng))
- 查看所有可用的topic
kafka-topics.sh --list--bootstrap-server localhost:9092
image.png
3.測試
- 3.1 往topic發(fā)布信息
kafka-console-producer.sh --broker-list localhost:9092 --topic mytest
發(fā)送三個消息拐袜,分別是hello, world和!
image.png
- 3.2 消費消息
新開一個控制臺
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytest --from-beginning
注意: --from-beginning 表示從最開始的offset處開始消費梢薪。如果不寫表示從最新的offset處消費阻肿,那么先發(fā)送了消息再開啟消費者是收不到已發(fā)送的信息的
image.png
接收成功。