Pulsar消费者仅收到主题50%消息 未改配置故障咨询
Pulsar 50%消息未送达应用问题排查指南
核心根因(无应用配置变更场景)
- 主题分区与消费组分配不匹配:这是出现固定50%消费比例最常见的原因。如果主题分区被其他运维人员调整为2个,而当前消费组的订阅模式为Failover 故障转移模式、且消费实例只有1个,单个实例默认只能消费1个分区,自然只能拿到一半的消息。
- 生产端路由逻辑变更:如果生产侧消息路由规则被调整为按key哈希分区,且刚好半数消息被路由到消费实例未订阅/未分配到的分区,就会出现固定比例的消息遗漏。
- 死信队列触发规则被调整:如果消费组关联的重试次数阈值被调低,半数消息消费失败后会直接进入死信队列,不会再推送给原消费应用。
- 消息保留/TTL策略被修改:如果主题的消息保留时长被改得极短、或保留策略从持久化调整为
volatile,部分消息还没来得及被消费就会被Broker自动清理,也可能出现50%的丢失比例。 - Broker节点故障:如果主题部分分区的Leader Broker宕机且未完成自动故障转移,对应分区的消息暂时无法被消费拉取,也会出现固定比例的消息无法送达。
丢失消息的去向
- 积压在消费实例未分配到的分区中,可执行
pulsar-admin topics stats <你的主题名>查看各分区的消息积压量确认 - 被投递到当前消费组对应的死信队列(DLQ)主题中,直接消费DLQ主题即可看到未送达的消息
- 被Broker的TTL/过期清理规则永久删除,该场景下消息无法找回
- 存储在宕机Broker的本地磁盘中,待Broker节点恢复服务后可正常拉取消费
内容的提问来源于stack exchange,提问作者devinbost
相关产品推荐
相关产品推荐

