首页 > 其他分享 >RocketMQ教程-(4)-领域模型-消费者分组ConsumerGroup

RocketMQ教程-(4)-领域模型-消费者分组ConsumerGroup

时间:2023-09-13 10:32:49浏览次数:34  
标签:教程 消费者 ConsumerGroup 投递 重试 分组 Apache RocketMQ


定义

消费者分组是 Apache RocketMQ 系统中承载多个消费行为一致的消费者的负载均衡分组。

和消费者不同,消费者分组并不是运行实体,而是一个逻辑资源。在 Apache RocketMQ 中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以及高可用容灾。

在消费者分组中,统一定义以下消费行为,同一分组下的多个消费者将按照分组内统一的消费行为和负载均衡策略消费消息。

  • 订阅关系:Apache RocketMQ 以消费者分组的粒度管理订阅关系,实现订阅关系的管理和追溯。具体信息,请参见订阅关系(Subscription)
  • 投递顺序性:Apache RocketMQ 的服务端将消息投递给消费者消费时,支持顺序投递和并发投递,投递方式在消费者分组中统一配置。具体信息,请参见顺序消息
  • 消费重试策略: 消费者消费消息失败时的重试策略,包括重试次数、死信队列设置等。具体信息,请参见消费重试

模型关系

在 Apache RocketMQ 的领域模型中,消费者分组的位置和流程如下

RocketMQ教程-(4)-领域模型-消费者分组ConsumerGroup_rocketmq

  1. 消息由生产者初始化并发送到Apache RocketMQ 服务端。
  2. 消息按照到达Apache RocketMQ 服务端的顺序存储到主题的指定队列中。
  3. 消费者按照指定的订阅关系从Apache RocketMQ 服务端中获取消息并消费。

内部属性

消费者分组名称

  • 定义:消费者分组的名称,用于区分不同的消费者分组。集群内全局唯一。
  • 取值:消费者分组由用户设置并创建。具体命名规范,请参见参数限制

投递顺序性

  • 定义:消费者消费消息时,Apache RocketMQ 向消费者客户端投递消息的顺序。
    根据不同的消费场景,Apache RocketMQ 提供顺序投递和并发投递两种方式。具体信息,请参见顺序消息
  • 取值:默认投递方式为并发投递。

消费重试策略

  • 定义:消费者消费消息失败时,系统的重试策略。消费者消费消息失败时,系统会按照重试策略,将指定消息投递给消费者重新消费。具体信息,请参见消费重试
  • 取值:重试策略包括:
  • 最大重试次数:表示消息可以重新被投递的最大次数,超过最大重试次数还没被成功消费,消息将被投递至死信队列或丢弃。
  • 重试间隔:Apache RocketMQ 服务端重新投递消息的间隔时间。 最大重试次数和重试间隔的取值范围及默认值,请参见参数限制
  • 约束:重试间隔仅在PushConsumer消费类型下有效。

订阅关系

  • 定义:当前消费者分组关联的订阅关系集合。包括消费者订阅的主题,以及消息的过滤规则等。订阅关系由消费者动态注册到消费者分组中,Apache RocketMQ 服务端会持久化订阅关系并匹配消息的消费进度。更多信息,请参见订阅关系(Subscription)

行为约束

在 Apache RocketMQ 领域模型中,消费者的管理通过消费者分组实现,同一分组内的消费者共同分摊消息进行消费。因此,为了保证分组内消息的正常负载和消费,

Apache RocketMQ 要求同一分组下的所有消费者以下消费行为保持一致:

  • 投递顺序
  • 消费重试策略

版本兼容性

如行为约束中所述,同一分组内所有消费者的投递顺序和消费重试策略需要保持一致。

  • Apache RocketMQ 服务端5.x版本:上述消费者的消费行为从关联的消费者分组中统一获取,因此,同一分组内所有消费者的消费行为必然是一致的,客户端无需关注。
  • Apache RocketMQ 服务端3.x/4.x历史版本:上述消费逻辑由消费者客户端接口定义,因此,您需要自己在消费者客户端设置时保证同一分组下的消费者的消费行为一致。

若您使用 Apache RocketMQ 服务端5.x版本,客户端使用历史版本SDK,则消费者的消费逻辑以消费者客户端接口的设置为准。

使用建议

按照业务合理拆分分组

Apache RocketMQ 的消费者和主题是多对多的关系,对于消费者分组的拆分设计,建议遵循以下原则:

  • 消费者的投递顺序一致:同一消费者分组下所有消费者的消费投递顺序是相同的,统一都是顺序投递或并发投递,不同业务场景不能混用消费者分组。
  • 消费者业务类型一致:一般消费者分组和主题对应,不同业务域对消息消费的要求不同,例如消息过滤属性、消费重试策略不同。因此,不同业务域主题的消费建议使用不同的消费者分组,避免一个消费者分组消费超过10个主题。

消费者分组管理尽量避免自动化机制

在 Apache RocketMQ 架构中,消费分组属于状态管理类的逻辑资源,每个消费分组都会涉及关联的消费状态、堆积信息、可观测指标和监控采集数据。因此,生产环境需要严格管理消费者分组资源,请勿随意进行增、删、改、查操作。

Apache RocketMQ 虽然提供了自动创建消费者分组的功能,但是建议仅在测试环境使用,生产环境请勿打开,避免产生大量消费者分组,无法管理和回收,且浪费系统资源。

标签:教程,消费者,ConsumerGroup,投递,重试,分组,Apache,RocketMQ
From: https://blog.51cto.com/ratelcloud/7452313

相关文章

  • VUE2教程-基础-简介
    Vue.js是什么Vue(读音/vjuː/,类似于 view)是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue......
  • RabbitMQ、RocketMQ和Kafka的不同之处
    RabbitMQ、RocketMQ和Kafka是三种常见的消息队列系统,它们在设计和使用方面有一些不同之处:架构设计:RabbitMQ:RabbitMQ是一个基于AMQP(高级消息队列协议)的开源消息队列系统,采用的是传统的Broker架构模式,其中包括生产者、消费者和中间件(Broker)。RocketMQ:RocketMQ是一个基于分布式......
  • 运动控制卡使用教程
    1TB6600步进驱动器的使用 首先关注驱动器接口的原理图  再看控制卡的输出接口 因此这里用共阳极接法。 还有共阴极接法  参考:https://www.yii666.com/blog/328067.html  所谓“NPN输出”,简单说就是传感器未触发时,信号输出悬空或者上拉到电源正极,一......
  • 信息系统项目管理师教程(第四版) 第一章 信息化发展 学习笔记1-20230911
    第一章《信息化发展》 学习要点:1、信息的基本概念、信息的7个质量属性。2、信息系统的概念、特点或用途、抽象模型、信息系统生命周期。3、信息化、信息化系统。4、工业互联网(四大层级)、车联网(体系框架、链接方式、应用场景)。5、农业农村现代化、乡村振兴战略、两化融合与......
  • 《Python数据分析基础教程:NumPy学习指南.第2版》高清高质量PDF电子书+源码
    罕见的NumPy中文入门教程,Python数据分析首选从最基础的知识讲起,手把手带你进入大数据挖掘领域囊括大量具有启发性与实用价值的实战案例下载:https://pan.quark.cn/s/730b594117c0......
  • AI绘画:StableDiffusion实操教程-斗破苍穹-云韵-婚服(附高清图下载)
    大家好,我是小梦,最近一直研究AI绘画。不久前,我与大家分享了StableDiffusion的全面教程:“AI绘画:StableDiffusion终极宝典:从入门到精通”然而,仍有些读者提出,虽然他们已经成功地安装了此工具,但生成的作品与我展示的相差较大。那么,如何缩小这之间的质感差距呢?关键在于选择合适的......
  • 无涯教程-JavaScript - TBILLPRICE函数
    描述TBILLPRICE函数返回面值$100的国库券的价格。语法TBILLPRICE(settlement,maturity,discount)争论Argument描述Required/OptionalSettlement国库券的结算日期。证券结算日期是发行国库券给买方的发行日期之后的日期。RequiredMaturity国库券的到期日。......
  • 《Django基础教程》PDF
    下载:https://pan.quark.cn/s/a49665fa40e5......
  • 【Spark】Spark基础教程
    Spark最初由美国加州伯克利大学的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。Spark特点Spark具有如下几个主要特点:运行速度快:Spark使用先进的DAG(DirectedAcyclicGraph,有向无环图)执行引擎,以支持循环数据流与内存计算,基......
  • 无涯教程-JavaScript - SYD函数
    描述SYD函数返回指定期间资产的年折旧数字。语法SYD(cost,salvage,life,per)争论Argument描述Required/OptionalCostTheinitialcostoftheasset.RequiredSalvageThevalueattheendofthedepreciation(sometimescalledthesalvagevalueoftheass......