一、文档
http://kafkadoc.beanmr.com/010_getting_started/01_introduction_cn.html
二、docker安装kafka并启动
# 安装
docker pull wurstmeister/kafka
# 启动
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=120.79.157.16:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://120.79.157.16:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
# 进入容器
docker exec -it kafka /bin/bash
cd /opt/kafka/bin
三、消费模式
- 队列模型:早期消息处理引擎就是按照队列模型设计的,所谓队列模型,跟队列数据结构类似,生产者产生消息,就是入队,消费者接收消息就是出队,并删除队列中数据,消息只能被消费一次。但这种模型有一个问题,那就是只能由一个消费者消费,无法直接让多个消费者消费数据。基于这个缺陷,后面又演化出发布-订阅模型。
- 发布-订阅模型:发布订阅模型中,多了一个主题。消费者会预先订阅主题,生产者写入消息到主题中,只有订阅了该主题的消费者才能获取到消息。这样一来就可以让多个消费者消费数据。
四、消费者组
- 一个消费者组中,每一个分区只能由组内的一消费者订阅
五、命令操作
# 查看消费者组
root@31cb94f56b46:/opt/kafka/bin# kafka-consumer-groups.sh --bootstrap-server 120.79.157.16:9092 --list
# 查看消费者组的详细信息
root@31cb94f56b46:/opt/kafka/bin# kafka-consumer-groups.sh -bootstrap-server 0.0.0.0:9092 --describe --group console-consumer-42472
# 指定消费组创建消费者监听topic,会自动创建消费组
root@31cb94f56b46:/opt/kafka/bin# kafka-console-consumer.sh --bootstrap-server 120.79.157.16:9092 --topic test --group myConsumerGroup