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语句。