0

Ich habe ein Backend in Amazon Web Services bereitgestellt. Ich habe ein Problem der Leistung mit SNS-Push-Benachrichtigungen. Ich habe bereits eine Anwendung mit meinem API-Schlüssel von Firebase registriert.Amazon SNS benötigt zu viel Zeit, um Benachrichtigungen zuzustellen

Wenn ich testen Sie die Benachrichtigungen von SNS-Konsole mit dem „Publish zum Endpunkt“ die Meldung Taste wirklich schnell geliefert:

{ 
"GCM": "{ \"data\": { \"message\": \"Hello world\" } }" 
} 

Aber wenn ich drücken Sie die Benachrichtigung der SNS Api mit für Java eine Lambda-Funktion dauert die Nachricht bis zu 30 Minuten. Also habe ich versucht, den "priority" -Parameter von Firebase zu verwenden, um die Nachricht früher ankommen zu lassen und es dauert jetzt bis zu 5 Minuten.

Da diese Benachrichtigungen während eines Spiels gedrückt werden, ist es wirklich nervig für einen Benutzer, Spielupdates 5 Minuten zu spät zu bekommen. Nehmen wir an, dass ein Spieler seinen Zug macht, und der andere merkt, dass er 2 Minuten später an der Reihe ist, aber er erhält 3 Minuten später eine Spielupdate-Benachrichtigung über das Spiel, das er bereits gespielt hat, damit er verrückt wird.

Für alle diese Benachrichtigungen verwende ich eine TTL (Zeit zu leben) von 172,800 Sekunden (2 Tage). Was kann ich tun, um die Leistung zu verbessern?

Antwort

0

Ich habe das Problem gefunden. Da ich Threads verwende, um die Benachrichtigungen zu pushen, wurde die Ausführung verschoben.

Es sieht so aus, als ob Lambda die Ausführung eines beliebigen Threads pausiert, nachdem die Methode handleRequest() abgeschlossen wurde. Ich hatte das gleiche Problem mit Threads, die Objekte in DynamoDB aktualisieren.

Mein Rat ist, Threads nur für Multi-Task-Jobs zu verwenden, aber garantiert handleRequest() erreicht return Anweisung erst, nachdem alle Threads beendet sind.

Verwandte Themen