一、Kafka命令行生产者发送消息和消费者消费消息

创建topic
./kafka-topics.sh --create --zookeeper xx.xx.xx.160:2181 --replication-factor 1 --partitions 2 --topic wnn-topic

•查看topic
./kafka-topics.sh --list --zookeeper xx.xx.xx.160:2181

•生产者发送消息
./kafka-console-producer.sh --broker-list xx.xx.xx.160:9092  --topic wnn-topic

•消费者消费消息 ( --from-beginning:会把主题中以往所有的数据都读取出来, 重启后会有这个重复消费)
./kafka-console-consumer.sh --bootstrap-server xx.xx.xx.160:9092 --from-beginning --topic wnn-topic

•删除topic
./kafka-topics.sh --zookeeper xx.xx.xx.160:2181 --delete --topic wnn-topic

•查看broker节点topic状态信息
./kafka-topics.sh --describe --zookeeper xx.xx.xx.160:2181  --topic wnn-topic

二、Kafka点对点模型和发布订阅模型

JMS规范目前支持两种消息模型
点对点(point to point)
    消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息
    消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费
发布/订阅(publish/subscribe)
    消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。
    和点对点方式不同,发布到topic的消息会被所有订阅者消费。
点对点的配置:

编辑消费者配置(确保同个名称group.id一样)
	编辑 config/consumer.properties 
•创建topic, 1个分区
./kafka-topics.sh --create --zookeeper xxx.xx.xx.160:2181 --replication-factor 1 --partitions 2 --topic t1

•指定配置文件启动 两个消费者
./kafka-console-consumer.sh --bootstrap-server xxx.xx.xx.160:9092 --from-beginning --topic t1 --consumer.config ../config/consumer.properties

•现象
只有一个消费者可以消费到数据,一个分区只能被同个消费者组下的某个消费者进行消费

发布订阅的配置:

编辑消费者配置(确保group.id 不一样)
	编辑 config/consumer-1.properties 
	编辑 config/consumer-2.properties 
•创建topic, 2个分区
./kafka-topics.sh --create --zookeeper xx.xx.xx.160:2181 --replication-factor 1 --partitions 2 --topic t2

•指定配置文件启动 两个消费者
./kafka-console-consumer.sh --bootstrap-server xx.xx.xx.160:9092 --from-beginning --topic t1 --consumer.config ../config/consumer-1.properties
​./kafka-console-consumer.sh --bootstrap-server xx.xx.xx.160:9092 --from-beginning --topic t1 --consumer.config ../config/consumer-2.properties

•现象
◦两个不同消费者组的节点,都可以消费到消息,实现发布订阅模型

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐