11

当使用 Google Cloud Messaging API 在后端服务器和 Android/Chrome 客户端之间发送消息时,后端服务器有时会收到超出速率限制的响应代码。对于HTTP 连接服务器,此代码是“DeviceMessageRateExceeded”,对于云连接服务器,该代码是“ DEVICE_MESSAGE_RATE_EXCEEDED” 。

这个错误代码是什么,应该如何管理?

4

2 回答 2

12

速率限制异常代码表明您过于频繁地从后端服务器发送消息。为确保服务稳定,每分钟/每台设备应用程序可以从后端服务器发送的消息数量有上限。此限制设置得很高,因此大多数表现良好的应用程序不应受到影响,但是所有应用程序都应准备好接收此错误代码。

如问题中所述,在HTTP 连接服务器的情况下,错误代码将为“DeviceMessageRateExceeded”。对于云连接服务器,它将是“DEVICE_MESSAGE_RATE_EXCEEDED”,它正在替换之前的错误代码“QUOTA_EXCEEDED”。

如果您的后端服务器收到此错误代码,它必须减慢向客户端发送消息的速度,最好是通过实施指数退避

于 2014-11-06T22:42:20.557 回答
7

CCS 下游 ack 不计入配额。

当您向单个设备发送太多消息时,会达到 DeviceMessageRateExceeded 配额 - 您无需退回所有发送,只需退回到该注册 ID。请确保您处理“规范”注册 ID 响应 - 可能有多个 regid 指向同一设备。

C2DM 中使用了“quota_exceeded”——GCM 目前不返回它。如果有人仍在使用 C2DM - 处理是限制/退避发送所有消息。甚至更好 - 迁移到没有此全局配额的 GCM。

于 2015-01-20T22:00:01.477 回答