1

Ich muss mehr als eine Nachricht an ein einzelnes Thema in nur einer Sekunde senden.TOPICS_MESSAGE_RATE_EXCEEDED beim Senden von mehr als einer Nachricht in einer kurzen Zeit

Ich habe drei Android-Geräte und ich versuche, mehrere Downstream-Nachrichten zu einem Thema (die drei Geräte sind abonniert) in kurzer Zeit (eine Sekunde) zu senden. Unser Server tut ACK für die drei von ihnen.

In diesem Moment senden wir zwei Nachrichten an das Thema, aber einer von ihnen gibt NACK mit einer Fehlermeldung von TOPICS_MESSAGE_RATE_EXCEEDED zurück.

Und jetzt versuchen wir erneut die Nachricht erneut zu senden, wenn time_to_live nicht zuerst abläuft. In unserem Fall versuchte diese Nachricht erneut zu senden, wenn der Benutzer erneut darauf klickt. Ist das das richtige Verhalten?

Hat jemand dieses Problem schon einmal gehabt? Wie ist es gelöst?

+2

würde ich annehmen, indem ich Geld zahlte. – Kayaman

+0

Wenn das richtig ist, wo finde ich eine Beschreibung dieses Problems? – dzivi

+0

Ich würde in der Dokumentation davon ausgehen, dass sie sagen: "Wenn Sie diesen Dienst für echte Workloads verwenden möchten, müssen Sie Geld zahlen". Ich nehme nur an. Es klingt, als ob du eine kostenlose Version von etwas verwendest und es dir nur solche erbärmlichen Übertragungsraten erlaubt. – Kayaman

Antwort

2

Dies ist das erwartete Verhalten für GCM/FCM. Das Senden mehrerer Nachrichten an ein Thema in einer kurzen Zeitspanne verursacht diesen Fehler.

Ich denke, das als auch den Verkehr über den Umgang mit Sicherheitsnetz für GCM/FCM gegen Überschwemmungen und dient. Stellen Sie sich einfach vor, wenn Sie 1000 Abonnenten haben, dann senden Sie mehrere Mehrfachnachrichten in weniger als einer Sekunde zu diesem Thema.

Sie sollten eine Verzögerung (ca. 5-10 Sekunden) für jede Nachricht implementieren, die Sie an das Thema senden.

Auch von @ Eran Antwort erwähnt here (die sich aus der docs basiert):

Themen Nachricht Bewertung Überschritten Die Rate von Nachrichten an Abonnenten zu einem bestimmten Thema ist zu hoch. Verringern Sie die Anzahl der Nachrichten, die für dieses Thema gesendet werden, und versuchen Sie nicht sofort erneut zu senden.

+0

Vielen Dank für Ihre Zeit. Das ist gut. Ich habe über exponentiellen Backoff gelesen. Ist das eine gute Idee? – dzivi

+0

@ 12345 Der exponentielle Backoff wird normalerweise als * fail safe * verwendet.Sie können es verwenden, wenn Sie möchten. Aber für Ihr Szenario, da die TOPICS_MESSAGE_RATE_EXCEEDED bereits erwartet wird, sollten Sie einfach Verzögerungen beim Senden der Nachrichten implementieren, um es vollständig zu vermeiden –

+0

@ 12345 Ich wollte nur auf Sie einchecken. Tritt der Fehler auch nach der Implementierung von Verzögerungen bei Ihren Anforderungen immer noch auf? Ich habe festgestellt, dass Sie Ihren Post bearbeitet haben, an dem Sie ein Verhalten überprüfen möchten. Ich habe Schwierigkeiten, es zu verstehen. Kannst du mehr erklären? –

Verwandte Themen