1.消费者分组(ConsumerGroup)
消费者分组是 Apache RocketMQ 系统中承载多个消费行为一致的消费者的负载均衡分组。是一个逻辑资源。在 Apache RocketMQ 中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以及高可用容灾
2.消费者分组可统一定义的消费行为
消费行为 | 描述 |
---|---|
订阅关系 | Apache RocketMQ 以消费者分组的粒度管理订阅关系,实现订阅关系的管理和追溯 |
投递顺序性 | Apache RocketMQ 的服务端将消息投递给消费者消费时,支持顺序投递和并发投递,投递方式在消费者分组中统一配置 |
消费重试策略 | 消费者消费消息失败时的重试策略,包括重试次数、死信队列设置等 |
3.消费者分组的属性
(1)消费者分组名称
消费者分组的名称,用于区分不同的消费者分组。集群内全局唯一。消费者分组由用户设置并创建
(2)投递顺序性
消费者消费消息时,Apache RocketMQ 向消费者客户端投递消息的顺序。根据不同的消费场景,Apache RocketMQ 提供顺序投递和并发投递两种方式。默认投递方式为并发投递
(3)消费重试策略
消费者消费消息失败时,系统的重试策略。消费者消费消息失败时,系统会按照重试策略,将指定消息投递给消费者重新消费。取值包括最大重试次数和重试间隔
(4)订阅关系
当前消费者分组关联的订阅关系集合。包括消费者订阅的主题,以及消息的过滤规则等。订阅关系由消费者动态注册到消费者分组中,Apache RocketMQ 服务端会持久化订阅关系并匹配消息的消费进度
4.同一消费者组下的消费者行为约束
Apache RocketMQ 要求同一分组下的所有消费者投递顺序和消费重试策略两个消费行为保持一致
5.消费者分组的使用建议
(1)按照业务合理拆分分组
Apache RocketMQ 的消费者和主题是多对多的关系,对于消费者分组的拆分设计,建议遵循以下原则:
- 消费者的投递顺序一致:同一消费者分组下所有消费者的消费投递顺序是相同的,统一都是顺序投递或并发投递,不同业务场景不能混用消费者分组
- 消费者业务类型一致:一般消费者分组和主题对应,不同业务域对消息消费的要求不同,例如消息过滤属性、消费重试策略不同。因此,不同业务域主题的消费建议使用不同的消费者分组,避免一个消费者分组消费超过10个主题
(2)消费者分组管理尽量避免自动化机制
在 Apache RocketMQ 架构中,消费分组属于状态管理类的逻辑资源,每个消费分组都会涉及关联的消费状态、堆积信息、可观测指标和监控采集数据。因此,生产环境需要严格管理消费者分组资源,请勿随意进行增、删、改、查操作