为什么当前虚拟集群 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 的限制。