Skip to main content

禁用慢消费者消费功能开关配置项检查

巡检规则

本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。

检测数据源

禁用慢消费者消费功能开关配置项的检测数据源是目标集群 BrokerConfig 信息,通过读取目标集群当前生效的配置,判断是否处于异常和风险的状态。

检测周期

  • 每 10 分钟一次。
  • 不可关闭。

异常检测逻辑


[BrokerConfig#disableConsumeIfConsumerReadSlowly](https://github.com/apache/rocketmq/blob/release-4.9.4/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java#L121C21-L121C55) = true,则产生异常事件。

事件和风险

RocketMQ Copilot 系统巡检会对检测不通过的规则产生异常事件和风险,异常事件遵循 概述▸

异常事件

异常风险

  • 关联的风险类型:慢消费者被禁用。

风险分析

启用该开关时,会禁止消费进度落后的 ConsumerGroup 对应的所有 Consumer 进行消费。具体进度落后多少字节会被禁止消费由 BrokerConfig#consumerFallbehindThreshold 决定。

该开关是全局性高危配置。启用该开关会禁止消费进度落后的 ConsumerGroup 对应的所有 Consumer 进行消费,该开关既不区分 ConsumerGroup,也不区分 ConsumerGroup 下的 Consumer,会直接造成一些有对堆积但尚在正常消费处理的 Consumer 不可用。

该配置设计初衷是期望降低消息数据冷读对 Broker 造成的影响,但是在启用该开关时会直接关闭对应 Consumer Group 的读权限。可以考虑使用 MessageStoreConfig#maxTransferBytesOnMessageInDisk & MessageStoreConfig#maxTransferCountOnMessageInDisk 来调节冷读对业务造成的影响。

运维建议

建议 1:生产环境不启用该开关

生产环境建议关闭该开关,避免影响正常的消费者消费消息

建议 2:可以使用消费位点重置工具快速清理大量堆积

生产环境如需要针对少量的消费者分组快速清理堆积,避免产生冷读,则可以使用重置消费位点工具。

建议 3:可以针对单个消费者分组进行禁读

如果某个 ConsumerGroup 出现严重堆积且堆积的消息已经失去消费意义,可以对其重置位点。

如果想干预冷读消费,也可以使用 mqadmin updateSubGroup -s 来对单个 Consumer Group 进行禁读。