跳至主要内容
版本: 5.0

消费者组

本节介绍 Apache RocketMQ 中消费者组的定义、模型关系、内部属性和行为约束。本主题还提供消费者组的版本兼容性信息和使用注意事项。

定义

消费者组是包含使用相同消费行为的消费者的负载均衡组,在 Apache RocketMQ 中。

与作为运行实体的消费者不同,消费者组是逻辑资源。Apache RocketMQ 初始化消费者组中的多个消费者,以实现消费性能的扩展和高可用性灾难恢复。

在消费者组中,消费者根据组中定义的消费行为和负载均衡策略来消费消息。以下部分描述了定义的消费行为

  • 订阅:Apache RocketMQ 基于消费者组管理和跟踪订阅。有关更多信息,请参阅 订阅。aa

  • 传递顺序:Apache RocketMQ 代理使用有序传递或并发传递将消息传递给消费者。您可以在消费者组中配置传递方法。有关更多信息,请参阅 fifo 消息

  • 消费重试策略:消费者无法消费消息时使用的重试策略。该策略包括重试次数和死信队列的设置。有关更多信息,请参阅 消费重试

模型关系

下图显示了消费者组在 Apache RocketMQ 领域模型中的位置。消费者组

  1. 消息由生产者初始化并发送到 Apache RocketMQ 服务器。

  2. 消息按到达 Apache RocketMQ 服务器的顺序存储在主题的指定队列中。

  3. 消费者根据指定的订阅关系从 Apache RocketMQ 服务器获取和消费消息。

内部属性

消费者组名称

  • 定义:消费者组的名称。消费者组名称用于区分消费者组。消费者组名称在集群中是全局唯一的。

  • 值:由用户创建和配置。有关更多信息,请参阅 参数限制

传递顺序

  • 定义:Apache RocketMQ 将消息传递给消费者客户端的顺序。

    Apache RocketMQ 基于不同的消费场景支持有序传递和并发传递。有关更多信息,请参阅 Fifo 消息

  • 值:默认传递方法是并发传递。

消费重试策略

  • 定义:消费者无法消费消息时使用的重试策略。如果消费者无法消费消息,系统将根据策略重新将失败的消息传递给消费者以重新消费。有关更多信息,请参阅 消费重试

  • 值:消费重试策略包含以下项目

    • 最大重试次数:消息可以重新传递的最大次数。如果消息无法消费且超过最大重试次数,则将消息传递到死信队列或丢弃。

    • 重试间隔:Apache RocketMQ 代理重新传递失败消息的间隔。

有关最大重试次数和重试间隔的有效值和默认值的更多信息,请参阅 参数限制

  • 约束:重试间隔仅适用于推式消费者。

订阅

  • 定义:与当前消费者组关联的订阅关系集。订阅包括消费者订阅的主题和消费者使用的消息过滤器规则。有关更多信息,请参阅 订阅

消费者为消费者组动态注册订阅。Apache RocketMQ 代理持久化订阅并将订阅与消息的消费进度匹配。

行为约束

在 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 提供自动创建消费者组的功能。但是,如果您在生产环境中启用此功能,可能会创建大量消费者组。大量消费者组可能难以管理和回收,并导致系统资源浪费。因此,我们建议您仅在测试环境中使用此功能。