一、准备
sbt-0.13.7.tgz下载地址:http://www.scala-sbt.org/download.html
kafka_2.9.2-0.8.1.1.tgz下载地址:
https://www.apache.org/dyn/closer.cgi?path=/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz
slf4j-1.7.2.zip下载地址:
http://download.csdn.net/download/luka2008/4985762
二、步骤
1、linux环境,下载并安装上述软件包
2、使用命令:sbt update和 sbt package,下载kafka的依赖包和构建kafka的环境
3、先启动zookeeper集群
执行bin/kafka-server-start.sh config/zookeeper.properties
会报错:
Unrecognized VM option 'UseCompressedOops'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
原因:jdk的版本不匹配,需要修改一下配置文件,jvm参数中-XX标识的是实验性参数,kafka用了很多用来优化运行的jvm参数,而你安装的 jdk所带的jvm不一定支持这些参数。
解决:修改文件bin/kafka-run-class.sh:去掉这个配置-XX:+UseCompressedOops
又会报错:
Failed to load class "org.slf4j.impl.StaticLoggerBinder".
原因:org.slf4j.impl.StaticLoggerBinder无法载入到内存,原因是没有找到合适的绑定SLF4J
解决:下载slf4j-1.7.2.zip,拷贝 slf4j-nop-1.7.2.jar到kafka的libs目录下
4、启动一个服务端
bin/kafka-server-start.sh config/server.properties
5、查看topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看topic描述
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
6、测试
启动一个生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
开启一个消费者(新启一个terminal)
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
7、执行完consumer的命令后,在producer的terminal中输入信息,马上在consumer的terminal中就会出现输入的信息。有点儿像一个通信客户端。
三、命令中的参数解释
--zookeeper localhost:2181 这个说明了去连本机2181端口的zookeeper server,--topic test,在kafka里,消息按topic来区分,我们这里的topic叫test,所以不管是consumer还是producer都指向了test。其他的参数,我就截图了,首先是producer的参数:
Consumer的参数:
这些参数你可以先看个大概,之后会在编程中使用到,都可以动态的配置。