2

我想使用 Amazon SNS 向 2000 万台设备发送时间紧迫的移动 PUSH 通知。每个主题最多可以有 10,000 台设备,我最多可以创建 3,000 个主题。使用 Amazon PHP SDK 意味着以 1 秒的时间发送 2000 个 API 调用,总共需要 33 分钟。这对时间关键的消息没有好处。

我创建了一个 SQS 队列并将其订阅到 SNS 主题。当我将 PUSH 消息发送到 SQS 队列时,它没有被传递 - 它仍然在队列中。

如何使用这些服务更快地发送消息?

谢谢!

4

4 回答 4

0

你检查了队列策略吗?创建它时,默认情况下它没有策略,只有所有者才能使用它。

检查您在 API 中使用的 IAM 用户,并确保您具有 SQS 向他授予权限的策略。

我过去使用 SNS 每月发送大约 1.5 毫米的通知,我没有遇到任何问题。但我没有按您需要的速度提供可靠的记录或经验。但我建议你看看下面的文章http://www.quora.com/Push-Notifications/Which-is-best-to-use-Amazon-SNS-Google-Cloud-Messaging-or-Parse-为什么会稍微谈一下 SNS x GCM。

希望这可以帮助。

于 2013-09-13T17:13:20.983 回答
0

由于您没有指定通知的完整工作流程,我会猜测,我的猜测是您的方法错误。

例如,如果您需要发送 100 个推送通知,并且为此您一次从您的应用程序创建 100 个 SNS 请求,那么您添加了不必要的复杂层。只需从您的应用程序发送 100 次推送并跳过 SNS。

正确的做法是触发一个单一的 SNS 动作,该动作将打击所有工人,他们将在获得“订单”时按需完成工作。

希望有帮助。

于 2013-10-07T23:08:44.837 回答
0

每个主题 10,000 台设备 * 3,000 个主题将允许您向 3000 万台设备发送消息。为什么不直接在所有 3,000 个主题中复制您的主题并将您的消息发布到每个主题?用户将订阅这 3,000 个主题之一。我实际上并没有尝试过,但似乎是最直接的方法。

于 2014-11-14T09:06:28.553 回答
0

使用 Guzzle 并行发送请求。

$client->send(array(
    $client->get('http://www.example.com/foo'),
    $client->get('http://www.example.com/baz'),
    $client->get('http://www.example.com/bar')
));
于 2014-11-14T15:33:18.683 回答