配额
配额描述“一个应用最多能装多少”:群成员、超级群成员、聊天室成员上限与消息频率。配额随 services 接口一起读写,按应用隔离;超出成员上限时服务端返回 1015 MEMBERSHIP_LIMIT。
概念
| 配额键 | 默认/范围 | 生效点 |
|---|---|---|
maxGroupMembers | 按应用配置(默认值随服务端常量) | 加群/建群时校验,超出 1015 |
maxSuperGroupMembers | 同上 | 超级群成员校验,超出 1015 |
maxChatroomMembers | 同上 | 聊天室加入校验,超出 1015 |
messageRatePerMinute | 每分钟消息数 | 当前未在服务端强制;仅作为配置值展示 |
- 配额是应用级配置,不按用户/群单独设置;测试用户上限是另一套(见「测试用户」)。
messageRatePerMinute与协议里的sendRatePerMinute都未强制;真正生效的接口级限流是「接口调频」。- 调整配额不会追溯清理已超限的数据;只影响后续写入。
未强制项如实标注
messageRatePerMinute 目前只保存不执行。需要限流请配置「接口调频」的 per-operation QPS,或在上层网关限流。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#services(tab#services:服务开通)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 读取现有配额
GET services,查看
quotas当前值。 - 设置新配额
POST services 时带完整
quotas对象;未传则保持服务端默认/原值。 - 验证边界
构造超过上限的加群/加聊天室请求,应返回 1015。
- 容量规划
按单群上限 × 群数估算内存与消息存储;配额不是订阅套餐,不产生费用。
参数表
| 参数 | 类型 | 说明 |
|---|---|---|
quotas.maxGroupMembers | uint32 | 普通群成员上限 |
quotas.maxSuperGroupMembers | uint32 | 超级群成员上限 |
quotas.maxChatroomMembers | uint32 | 聊天室在线成员上限 |
quotas.messageRatePerMinute | uint32 | 消息频率配置(当前未强制) |
示例
调整群与聊天室上限
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/services" \
-H 'X-Admin-Secret: dev-admin'
# 注意:services 是整体覆盖,先取回现有映射再修改
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/services" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"services":{"private_chat":true,"group":true,"chatroom":true,"callbacks":true},"quotas":{"maxGroupMembers":2000,"maxSuperGroupMembers":100000,"maxChatroomMembers":5000,"messageRatePerMinute":120}}'常见问题
调低配额会踢人吗?
不会。只影响后续加入;已超限的群/聊天室保持现状,直到成员自然减少。
消息频率为什么不生效?
当前服务端没有按用户/分钟强制消息数;请使用接口调频或网关限流。
成员上限和超级群上限能一样吗?
可以分别设置;超级群通常远大于普通群。
配额与计费有关吗?
无关。自托管版没有按配额计费或升级套餐的流程。