美文网首页
SpringCloud之Stream-5.消费组和消息分区详解

SpringCloud之Stream-5.消费组和消息分区详解

作者: 那钱有着落吗 | 来源:发表于2021-09-30 09:10 被阅读0次

消费组

前面我们接触的都是广播场景,话说这个广播模式简直就是个围观模式,所有订阅相同主题的消费者都眼巴巴看着生产者发布的消息,一个消息在所有节点都要被消费一遍。如果我只想挑一个节点来消费消息,而且又不能只逮着一只羊来薅羊毛,必须利用负载均衡来分发请求。这个Stream能不能办到呢?
这不就是单播模式吗,那自然不在话下,Stream里的消费组就是专门解决这个问题的。让我们来用一个案例说明它的工作模式:


image.png

在上面这个例子中,“商品发布”就是一个消息,它被放到了对应的消息队列中,有两拨人马同时盯着这个Topic,这两拨人马各自组成了一个Group,每次有新消息到来的时候,每个Group就派出一个代表去响应,而且是从这个Group中轮流挑选代表(负载均衡),这里的Group也就是我们说的消费者。
在Stream里配置一个消费组非常简单,下一小节我就带大家去做一个Demo。在这里我就先小剧透一点内容好了:

spring.cloud.stream.bindings.group-producer.group=Group-A

消费分区

消费分区消费组,傻傻分不清楚。这两个名字听起来很像,其实并不是一码事,消费组相当于是每组派一个代表去办事儿,而消费分区相当于是专事专办,也就是说,所有消息都会根据分区Key进行划分,带有相同Key的消息只能被同一个消费者处理。
我们来看下面的消息分区例子:


image.png

消息分区有一个预定义的分区Key,它是一个SpEL表达式(想想前面哪一章节讲过SpEL?提示换一下,Key Resolver)。我们需要在配置文件中指定分区的总个数N,Stream就会为我们创建N个分区,这里面每个分区就是一个Queue(可以在RabbitMQ管理界面中看到所有的分区队列)。
当商品发布的消息被生产者发布时,Stream会计算得出分区Key,从而决定这个消息应该加入到哪个Queue里面。在这个过程中,每个消费组/消费者仅会连接到一个Queue,这个Queue中对应的消息只能被特定的消费组/消费者来处理。

相关文章

  • SpringCloud之Stream-5.消费组和消息分区详解

    消费组 前面我们接触的都是广播场景,话说这个广播模式简直就是个围观模式,所有订阅相同主题的消费者都眼巴巴看着生产者...

  • Kafka2.0消费者协调器源码

    消费组和消费者 消费组和消费者是一对多的关系。 同一个消费组的消费者可以消费多个分区,且是独占的。 消费者的分区分...

  • kafka

    主题和分区 消息发送方式 消息顺序保证 分区 消费者 消费者005消费者01.PNG005消费者02.PNG005...

  • (10)消费者

    1、消费组:分区只能被组中一个消费者消费;消费者>分区个数,有空闲 2、分区策略:1)界限分配(默认) 2)轮询...

  • kafka出现若干分区不消费的现象

    背景 近日,有用户反馈kafka有topic出现某个消费组消费的时候,有几个分区一直不消费消息,消息一直积压(图1...

  • 二、Kafka基础实战:消费者和生产者实例

    一、Kafka消费者编程模型 1.分区消费模型 分区消费伪代码描述 2.组(Group)消费模型 按组(Group...

  • rancher教程四(zookeeper)

    一、安装zookeeper zookeeper维护kafka的broker信息,消息分区和消费者之间的关系,分区消...

  • Kafka分区与消费者的关系

    1. 前言 我们知道,生产者发送消息到主题,消费者订阅主题(以消费者组的名义订阅),而主题下是分区,消息是存储在分...

  • Pulsar的Key_Shared消费模式与Kafka的消费者再

    Kafka消费者再均衡 在Kafka中,一个分区只能有一个消费者,处于一个消费组的消费者,处理消息的时候是...

  • kafka_09_消费消息

    1. 消费消息 poll方法 ConsumerRecord代码如下: 按照分区维度来消费消息 按照主题维度来消费消...

网友评论

      本文标题:SpringCloud之Stream-5.消费组和消息分区详解

      本文链接:https://www.haomeiwen.com/subject/asgqnltx.html