2018-12-25,周二,多云
昨天看了一圈kafka的概念,今天来实践一下。
先启动zookeeper:
xmlydeMacBook-Pro:conf xmly$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /Users/xmly/tools/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
jps一下看到一个QuorumPeerMain,zk就算起好了。
然后启动kafka:
xmlydeMacBook-Pro:kafka_2.11-2.1.0 xmly$ kafka-server-start.sh config/server.properties
看到一长串[INFO]。另起一个终端jps一下:
xmlydeMacBook-Pro:config xmly$ jps
1049 Kafka
730 QuorumPeerMain
1597 Jps
看到Kafka就说明kafka起好了。
建立一个名为test的topic:
xmlydeMacBook-Pro:config xmly$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".
查看所有topic列表:
xmlydeMacBook-Pro:config xmly$ kafka-topics.sh --zookeeper localhost:2181 --list
test
有了topic,开启一个producer写数据:
xmlydeMacBook-Pro:config xmly$ kafka-console-producer.sh --broker-list localhost:9092 --topic test
>message1
>this is another message, we call it message2
>
另起一个终端,开启一个consumer读取数据:
xmlydeMacBook-Pro:config xmly$ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
message1
this is another message, we call it message2
此时,从producer写入的数据会立即从consumer输出。
kafka不仅可以从终端输入从终端输出,还可以读文件写文件。使用connectors。
新建文本文件:/Users/xmly/test/test.txt,随便填几行文本。
起两个connector:
修改$KAFKA_HOME/config/connect-file-source.properties:
name=local-file-source
connector.class=FileStreamSource
tasks.max=1
file=/Users/xmly/test/test.txt
topic=connect-test
第一个connector将文本文件的内容读到topic里: