前言
- kafka版本:2.11-2.1.1
1. 启动/关闭Kafka
注意:在启动Kafka进程之前记得先启动Zookeeper集群
启动当前主机Kafka进程
bin/kafka-server-start.sh config/server.properties
可以使用-daemon
参数,表示以守护线程的方式启动,日志不打印到控制台
bin/kafka-server-start.sh -daemon config/server.properties
关闭当前主机Kafka进程
bin/kafka-server-stop.sh
2. 查看所有Topic信息
需要指定Zookeeper集群和其提供的客户端端口号。如果想尝试使用多个Zookeeper服务器,各个服务器之间使用逗号隔开
bin/kafka-topics.sh --zookeeper zkServer1:2181,zkServer2:2181 --list
3. 创建Topic
向Zookeeper服务器集群注册Topic
bin/kafka-topics.sh --zookeeper zkServer1:2181 --create --replication-factor 3 --partitions 1 --topic first
注意:自Kafka 2.2.x及之后都是向Kafka集群注册Topic,而不是直接向Zookeeper注册Tpoic,所以命令行有所不同,将Zookeeper集群改成指定Kafka集群及其客户端端口
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic first
4. 删除Topic
需要server.properties中设置delete.topic.enable=true
,否则只是标记删除而实际未删除,会导致再次创建同名Topic时失败
bin/kafka-topics.sh --zookeeper zkServer1:2181 --delete --topic first
5. 生产消息
启动Kafka生产者进程
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic first
6. 消费消息
启动消费者进程,实时消费Topic中的最新消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first
加上from-beginning
则是将Topic中已保存的历史消息全部取出
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic first
注意1:如果使用了多个Partition,取出的消息只能保证单个Partition中的消息有序,多个Partition之间消息是不保证有序的
注意2:在Kafka 0.8.1及之前,Consumer消费分区消息的offset偏移量也通过Zookeeper来保存,在此版本之后就不建议或者禁止使用zk来保存offset。在Kafka 0.8.2及之后,Kafka通过建立一个Internal Topic即内部Topic来保存Consumer Offset信息(topic名为_consumer_offset),同样存储在log.dirs路径下。因此Kafka 0.8.2及之后是通过指定Kafka集群来消费消息,而Kafka 0.8.1及之前是通过指定Zookeeper集群来消费消息
7. 查看指定Topic具体信息
bin/kafka-topics.sh --zookeeper zkServer1:2181 --describe --topic first
其中ISR
表示已经和Partition Leader实现同步的Partition副本(in-sync replication)