借助 FCM 主题消息传递,您可以将消息发送至已经选择订阅特定主题的多台设备。您只需根据需要撰写主题消息,FCM 会负责确定发送路径并将消息可靠地传送至正确的设备。
主题消息传递的要点:
- 最适合公开提供的信息,如天气变化提醒。
- 主题消息的优化重心是吞吐量而非延迟。如需将消息快速安全地传送到单台设备或小规模设备组,应将消息定位至注册令牌,而非主题。
配额和限制
主题消息传递不限制每个主题的订阅数。但是,FCM 在以下方面有强制性限制:
- 一个应用实例最多只能订阅 2,000 个主题。
- 如果您通过批量订阅来订阅应用实例,则每次请求仅限订阅 1,000 个应用实例。
订阅节流
添加或移除主题订阅的速率限制为每个项目 3,000 QPS。
每个项目新增订阅的频率存在限制。如果您在短时间内发送过多订阅请求,FCM 服务器将给出 429 RESOURCE_EXHAUSTED
(“QUOTA_EXCEEDED”)响应。请使用指数退避算法重试。
扇出限制
消息扇出是指向多台设备发送消息的过程,例如当您定位主题和群组,或使用 Notifications Composer 定位目标设备或细分用户群时。
消息扇出不是瞬时间完成的,因此有时候您会同时运行多个扇出。我们将每个项目中并发进行的消息扇出数量限制为 1000。超出此值之后,我们可能会拒绝其他扇出请求,或者推迟请求中的扇出,直到某些正在进行的扇出完成为止。
实际可实现的扇出率受同时请求扇出的项目数量的影响。单个项目的扇出率为 10,000 QPS 并不罕见,但该数字与系统的总负载密切相关,并无保证。值得注意的是,可用的扇出容量在项目之间而不是在扇出请求之间分配。因此,如果您的项目有两个正在进行的扇出,那么每个扇出只能使用可用扇出率的一半。最大化扇出速度的推荐方法是一次只有一个进行中的活跃扇出。