0

I am asking this question after doing some research at my end and going through answers like one in :

Rate Limit Exceeded error when using Google Cloud Messaging API

I am trying to build an application which I would honestly like to be scalable up to 2-3 million devices. I know it's a far-fetched number but I have to plan accordingly. Now one part of my app is periodic updates (notifications - textual with max 500 characters). I would like to use GCM for these updates rather than creating my own push infra (or using third party paid tools). Although resources over the web state that:

"To ensure a stable service, there is a per minute / per device app upper limit on the number of messages that can be sent from a backend server. This limit is set high so most well behaving apps should not be affected, all apps should however be prepared to receive this error code."

I can't seem to find a definitive answer which can quantify the terms "well-behaving app" and "per minute/device" limit.

Questions

  1. Is there a quantified rate limit or is it all subjective?

  2. In case I have a scenario wherein I have to send maybe 1 notification/10 minutes on maybe 2 million registered devices, will the current GCM environment be able to scale? I am assuming I will be using a single sender ID for a single app.

  3. Can anyone share their experience with GCM for large scale deployments?

  4. Do I have an advantage using third party paid apps?

  5. What is the kind of latency/message-drops that are usually associated with GCM. As in, is this a good candidate for "low latency/high availability" sort of scenarios?

halfer
  • 19,824
  • 17
  • 99
  • 186
user1826116
  • 405
  • 1
  • 5
  • 15
  • `GCM` don't have a hard limit on the number of GCM messages that can be sent. But it has some `per-connection rate limits` that exist to prevent abuse, these shouldn't be an issue at that volume of traffic. Some general tips to avoid running into the per-connection rate limits: – bjiang Oct 23 '15 at 18:25
  • 1. Be sure your server-side code is well behaved. If you encounter an HTTP error, you should implement `exponential backoff scheme` for retrying the request. 2.If you're sending the same message to many devices, use `Device Groups or Topics`. 3. If you're sending many messages in a short period of time, consider using the `XMPP Connection Server`. Since it's a streaming protocol, it's more efficient than the HTTP Connection Server. – bjiang Oct 23 '15 at 18:26
  • I'd also like to point out that many very large scale applications with Billions of users use GCM to deliver messages. So I think GCM will be able to scale to your application. – Arthur Thompson Oct 24 '15 at 23:56

0 Answers0