回答

12

速率限制例外代碼表示您發送來自後端服務器的消息過於頻繁。爲確保提供穩定的服務,每分鐘/每個設備的應用程序上限可以從後端服務器發送的消息數量。此限制設置得很高,因此最適合運行的應用程序不應受到影響,但所有應用程序都應準備好接收此錯誤代碼。

如問題中所述,如果是HTTP Connection Server,則錯誤代碼將爲「DeviceMessageRateExceeded」。對於Cloud Connection Server,它將是「DEVICE_MESSAGE_RATE_EXCEEDED」,它取代了之前的錯誤代碼「QUOTA_EXCEEDED」。

如果您的後端服務器收到此錯誤代碼,它必須減慢它向客戶端發送消息的速度,理想情況是通過實施exponential backoff

+0

下游ack是否佔配額? 我如何知道我能夠再次發送下游消息的時間? – doplumi 2015-01-18 11:55:50

+0

您不會確切知道何時能夠再次發送消息,但在嘗試重新提交時,您應該在系統級別使用指數回退。 – PaulR 2015-01-20 16:53:24

+0

如果我們已經做了指數退避並尊重5xx錯誤代碼的Retry-After應該足夠嗎? – 2015-01-20 17:37:35

6

CCS下游確認未計入配額。

當您向一臺設備發送過多的消息時,DeviceMessageRateExceeded配額被擊中 - 您不需要退回所有發送,只需註冊該註冊ID。請確保您處理「Canonical」註冊ID響應 - 可能有多個指向同一設備的註冊表。

'quota_exceeded'在C2DM中使用 - GCM目前不返回它。如果任何人仍在使用C2DM - 處理是對所有消息進行限制/退避發送。甚至更好 - 遷移到沒有這個全球配額的GCM。