kafka学习

95 阅读1分钟

一、文档

kafkadoc.beanmr.com/010_getting…

二、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