【发布时间】:2013-09-13 16:25:26
【问题描述】:
我想使用 Amazon SNS 向 2000 万台设备发送时间紧迫的移动推送通知。每个主题最多可以有 10,000 台设备,我最多可以创建 3,000 个主题。使用 Amazon PHP SDK 意味着以 1 秒的时间发送 2000 个 API 调用,总共需要 33 分钟。这对于时间紧迫的消息没有好处。
我创建了一个 SQS 队列并将其订阅到 SNS 主题。当我将 PUSH 消息发送到 SQS 队列时,它没有被传递 - 它仍然在队列中。
如何使用这些服务更快地发送消息?
谢谢!
【问题讨论】:
-
我认为您的连接颠倒了。当您将 SQS 队列订阅到 SNS 主题时,该队列将接收发布到该主题的消息,但反之则不然。请参阅documentation 了解更多信息。
-
我认为你是对的。那么,我将如何构建一个系统来向这么多用户发送 PUSH 通知?
-
如果您无法从单个 php 线程获得所需的吞吐量,您可能需要考虑使用 SNS->SQS 并使用多个工作人员来消耗队列以推动更高的吞吐量。使用适用于 PHP 的 AWS 开发工具包进行操作的“每个 1 秒”衡量标准是什么?
-
我基于一些初步测试,显示 CURL 请求需要 0.5-1 秒。无论如何,瓶颈是将请求发送到 SNS 主题,而不是让 SNS 处理 PUSH 通知。因此,我认为 SQS 在我的情况下实际上不会有任何好处——“工人”实际上是 SNS 服务,因为它正在发送 PUSH 消息。我认为更好的解决方案是使用PHP Multicurl 将我的消息批量发送到最多 3,000 个主题。感谢 Bob 和 @felipe-garcia 的帮助和建议。
-
@SteveMc,使用多个线程,您应该能够在一台机器上每秒进行数百次发布,而不会有太大的困难
标签: amazon-web-services push-notification amazon-sqs google-cloud-messaging amazon-sns