一、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 •现象 ◦两个不同消费者组的节点,都可以消费到消息,实现发布订阅模型



