0

我在Amazon Web Services中部署了後端。我在使用SNS推送通知時遇到問題。我已經使用Firebase的API密鑰註冊了一個應用程序。亞馬遜SNS花費太多時間來發送通知

當我使用「發佈到終點」按鈕將郵件傳遞非常快,從SNS控制檯測試通知:

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

但是當我把使用SNS的API通知使用Java lambda函數,該消息最多需要30分鐘才能到達。所以我嘗試使用Firebase的「優先級」參數使消息更快到達,現在需要長達5分鐘。

{ 
"GCM": "{ \"priority\": \"high\", \"data\": { \"message\": \"Hello world\" } }" 
} 

由於這些通知是在比賽中推,實在是煩人的一個用戶獲得遊戲更新遲到5分鐘。假設一名球員做出了他的舉動,而另外兩分鐘後他發出了一個通知,但是他在他已經出場的比賽3分鐘後得到了一個比賽更新通知,所以他會生氣。

對於所有這些通知,我使用的TTL(生存時間)爲172,800秒(2天)。我能做些什麼來提高性能?

回答

0

我發現了這個問題。由於我使用線程來推送通知,所以執行被推遲。

看起來Lambda在handleRequest()方法完成後暫停了任何線程的執行。我在使用線程更新DynamoDB中的對象時遇到了同樣的問題。

我的建議是僅將線程用於多任務作業,但保證handleRequest()僅在所有線程完成後才達到return語句。