kafka消息细节

kafka消息细节


消息的储存


  • ⽣产者将消息发送给broker,broker会将消息保存在本地的⽇志⽂件中。
  • 消息的保存是有序的,通过offset偏移量来描述消息的有序性。
  • 消费者消费消息时也是通过offset来描述当前要消费的那条消息的位置。

在这里插入图片描述

单播消息


在⼀个kafka的topic中,启动两个消费者,⼀个⽣产者,问:⽣产者发送消息,这条消息是否同时会被两个消费者消费?
如果多个消费者在同⼀个消费组,那么只有⼀个消费者可以收到订阅的topic中的消息。换⾔之,同⼀个消费组中只能有⼀个消费者收到⼀个topic中的消息。


首先在test1主题中建立一个生产者:

./kafka-console-producer.sh --broker-list 127.0.0.1:9093 --topic test1

然后在test1主题中建立两个消费者,两个消费者位于同一个消费者组:

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --consumer-property group.id=testGroup --topic test1
./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --consumer-property group.id=testGroup --topic test1

接着在生产者中生产一条消息:

>give you resources

在这里插入图片描述
然后查看消费者终端:

在这里插入图片描述
可以发现,只有一个消费者消费到了消息。


多播消息


不同的消费组订阅同⼀个topic,那么不同的消费组中只有⼀个消费者能收到消息。实际上也是多个消费组中的多个消费者收到了同⼀个消息。


还是上述那个生产者,然后我们创建两个消费者,但是这次两个消费者位于不同的消费者组:

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --consumer-property group.id=testGroup1 --topic test1
./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --consumer-property group.id=testGroup2 --topic test1

生产者生产一条消息:

>give you resources

在这里插入图片描述
查看消费者终端:

在这里插入图片描述
可以发现,两个消费者都消费到了消息。

两者区别

下图就是描述多播和单播消息的区别:

在这里插入图片描述

kafka知识点目录

1.Linux环境部署kafka
2.Win10环境部署kafka
3.docker部署kafka
4.kafka的简单使用
5.kafka消息的细节
6.kafka主题和分区的概念
7.kafka集群操作
8.kafka生产者实现细节
9.kafka消费者实现细节
10.kafka集群中的controller、rebalance、HW
11.kafka中的优化问题
12.Kafka-eagle监控平台
13.kafka错误汇总

posted @ 2021-10-30 22:41  Dawnlight-_-  阅读(70)  评论(0编辑  收藏  举报