AppEngine+GCM: IOException: не удалось получить URL: https://android.googleapis.com/gcm/send

Я использую GCM в сочетании с Google AppEngine (Java). Мой сервис отправляет более 10.000 сообщений каждый день. Почти каждое сообщение успешно отправлено получателю. Но примерно каждый день, после отправки сообщения GCM через AppEngine, я получаю следующее исключение:

Uncaught exception from servlet
java.io.IOException: Could not fetch URL: https://android.googleapis.com/gcm/send
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:137)
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:43)
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.fetchResponse(URLFetchServiceStreamHandler.java:417)
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getInputStream(URLFetchServiceStreamHandler.java:296)
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getResponseCode(URLFetchServiceStreamHandler.java:149)
at com.google.android.gcm.server.Sender.sendNoRetry(Sender.java:362)
at com.google.android.gcm.server.Sender.send(Sender.java:261)
at de.alamos.firemergency.apager.gcm.ApagerServlet.sendDataToAndroid(ApagerServlet.java:282)
at de.alamos.firemergency.apager.gcm.ApagerServlet.doPost(ApagerServlet.java:162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
...

Эта ошибка возникает в следующей строке:

MulticastResult results = sender.send(message, tokens, 5);

У кого-нибудь есть идея, в чем может быть проблема?

Это довольно странно, потому что 99,999% всех сообщений будут отправлены. Лишь немногие из них бросают это исключение.

1 ответ

Решение

Вот "решение": https://groups.google.com/forum/#!msg/google-appengine/vkD2ffMogAg/ntF_EkHYaxcJ

Описание: вполне нормально, что несколько URL-вызовов с AppEngine завершатся неудачно. Если вызов не удался, вам просто нужно повторить попытку.

Я пытаюсь решить эту проблему с использованием очереди задач AppEngine.

Другие вопросы по тегам