kafka安装配置
http://blog.youkuaiyun.com/hljlzc2007/article/details/13278515
kafka配置说明( config/server.properties)
http://blog.youkuaiyun.com/lizhitao/article/details/25667831
需要注意的是:
log.retention.minutes=300 消息保存有效期,过期会被删除
num.partitions =1 每个topic的分区个数,只能增加不能减少
如果需要减少某个topic的分区数,只能先将该topic删除再重新创建
删除topic
./bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic 【topic name】
需要在配置文件中加入(默认一般没有该项)
重启kafka server
再次delete topic方生效
参考:
http://blog.youkuaiyun.com/fengzheku/article/details/50585972
接收topic消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic 【topic name】
通过kafka的log目录判断是否有消息生产
在生产者配置中( config/server.properties),可以找到log的目录,默认为同级目录的tmp/kafka-logs
下面有各个topic的消息缓存,如下分别为test、test1、test3三个topic的目录,后面为分区序号。
这是只有一个分区的情况,如果有多个分区,则会有多个目录(__consumer_offsets为系统默认topic)
目录下是一个indix和一个log文件。其中index文件的大小一般不会变化,log刚创建时大小为0,随着消息的增加,它的大小也会增加。如果消息过期,会有新的文件替换它们。但是初始文件名均为00000000000000000000.index,00000000000000000000.log
设置文件过期时间(如2分钟),查看新log文件的大小来判断是否有消息产生
log.retention.minutes=2
接收不到消息的原因:
1.由于消息有延迟,需要等待一段时间才能接收到(大概10-20s),之前测试了好几次以为没有接收到消息,实际上是等待时间不够长。
简单说下整个系统运行的顺序:
1. 启动zookeeper的server
2. 启动kafka的server
3. Producer如果生产了数据,会先通过zookeeper找到broker,然后将数据存放进broker
4. Consumer如果要消费数据,会先通过zookeeper找对应的broker,然后消费。
2.生产者用代码生成时,不需要再创立同名topic,否则消息也是接收不了。
3.客户端配置问题
auto.offset.reset=latest,表示接收最新消息;earliest表示从头接收消息。
暂时理解是:earliest时,消费者只接收它创建以后的消息,必须要生产者在消费者开始监听消息后发送消息才能被接收到。
参考:
http://www.lingdonge.com/coding/java/4035.html