之前两篇文章我们完成了Kafka的介绍和安装,接下来就让我使用Kafka‘写一个HelloWorld’吧。
这次我们来通过命令行开启kafka服务、开启kafka消费者服务、开启kafka生产者服务,通过生产者服务发送消息数据,进而实现消息的生产-消费‘helloworld’。
下述脚本均在kafka安装路径/bin下执行脚本,作者亲测。
1.启动ZooKeeper服务
首先让我们来启动ZooKeeper服务,指定配置文件zookeeper.properties。
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
启动Kafka服务
执行以下脚本启动Kafka服务,指定配置文件server.properties
./kafka-server-start.sh ../config/server.properties
创建Topic
通过脚本来创建topic。
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafka-topic-test1
这里我们来说一下几个重要的参数配置。
--replication-factor 1 : topic的副本数,理论上topic可以存在多个副本,并且这些副本会均匀的分配在各个broker中。还有这里需要注意点,topic副本数量不能超过broker的数量。
--partitions 1 : topic的分区数,如果broker只有一个的话,那么这里默认全部存放在那个broker中;如果有多个broker的话,kafka为topic提供了分区策略,在分布式系统中,当消费者获取数据时,会获取到哪个分区有新数据,然后从相应分区取得相关的数据;这里涉及到一个知识点,那就是偏移量,这个我们回头专门来解释一下。
--topic kafka-topic-test1 : 设置topic的名称。
查询已有Topic列表
查询脚本如下:
./kafka-topics.sh --list --zookeeper localhost:2181
--list : 查询topic列表。
通过查询可以得到所有的topic。
启动Kafka消费者服务
开始执行消费者服务脚本
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka-topic-test1 --from-beginning
这里也要说一下相关的配置参数。
--from-beginning : 读取还没有被消费的消息数据。
启动Kafka生产者服务
开始执行生产者服务脚本
./kafka-console-producer.sh --broker-list localhost:9092 --topic kafka-topic-test1
来试一下成果
我们接下来在生产者窗口中输入一段文字,如图所示:
随后我们再回头去看消费者窗口,你会看到这样的现象:
这样我们就已经完成了kafka基本操作的hello world了,庆祝庆祝吧!
总结一下
在这之后我们会再说一下消费数据从生产者,传递到消费者的整个生命周期。
如有不察之处,还请大家及时指出,感谢。