一、为什么初始化订阅/消费者客户端时报错 Subscription reached max consumers limit ?
当前 Topic 创建的消费者数量达到上限,因此新建消费者报错。出于集群稳定性考虑,每个 Topic 的消费者以及每个订阅的消费者数量不能无限制增加。Topic 和订阅的消费者上限可参考 使用限制,如果需要提高消费者数量,可以 提交工单 进行评估调整。
二、为什么当前虚拟集群 Producer 生产到某个 Topic 出现报错 The backlog quota of the topic xxx is exceeded ?
日志完整的报错为 server error: ProducerBlockedQuotaExceededException: Cannot create producer ontopic with backlog quota exceeded,虚拟集群有配置单 Topic 分区最大消息堆积上限 10GB(参考使用限制),当前 Topic 分区如果超过消息堆积上限,就会出现生产报错无法继续生产消息。通常有以下几种解决方案:
1. 控制台查看当前 Topic 各个订阅是否出现消息空洞,如果出现消息空洞,需要排查客户端没有 ack 的原因,并且重启对应客户端,让消息重推。
2. 加大消费者数量,提高对应 Topic 下每个订阅的消费速度。
3. 缩短 Topic 所在命名空间的 ttl 时间,或者修改当前消费的 Offset ,从而让没有被消费的消息自动被确认。不过这里需要注意,这两种修改方法都是为了让服务端自动 ack 的消息,因此不会将消息推送给客户端。
4. 升级到专业集群,专业版没有消息堆积 10GB 的限制。