如何使用亚马逊简单通知服务(SNS)发送数百万批量推送通知

21
像许多公司一样,我所在的公司不喜欢使用苹果的APNS:没有官方库,流媒体会随机中断等等。Android的推送系统也是如此:限制为小批量,与苹果的APNS完全不同...这就是为什么我们正在寻找替代方案,当亚马逊声称几乎免费发送数百万条推送通知时,我们认为SNS将是完美的解决方案。
问题是,我们经常需要处理超过一百万个设备,并且明显我们的推送活动很少针对相同的设备。 据我们所知,唯一的解决方案是使用AWS API,该API仅提供一次创建一个端点的方法!对我们来说很重要,因为经过一些测试,我们发现为了创建1,000,000个端点,大约需要15个小时(~ 17个调用/秒)。
即使在创建了所有终节点之后,为了一次性发送所有推送,端点也需要添加到主题中,而且这也必须逐个端点完成(因此需要15个小时)。 即使我们使用了多线程调用,比如30个线程,仍然需要一个小时!
那么,有人能告诉我们是否有任何遗漏的内容吗?亚马逊真的希望我们在30小时内淹没他们的网络服务以创建一个推送活动吗?如果需要准备数小时才能发送一百万条通知,他们如何声称每秒能发送一百万条信息?他们是否正在为SNS开发批处理API?可以插入包含标记的Amazon DB以提供SNS主题的信息吗?

我可以问一下,你是同步地完成所有这些工作的吗?在创建下一个EndpointArn之前等待一个EndpointArn被创建?我将会和你做类似的事情,但计划所有调用都是异步的。我只是试图根据你的经验来预测我可能会遇到什么问题。谢谢。 - Eric Olson
1
我也遇到了同样的问题。亚马逊已将我的帐户添加到功能请求中,但我们知道这意味着很少。与其订阅我们的用户到主题,我们只需直接将消息发送到发布API,因为这等同于相同的操作。仍然需要很长时间,我们需要能够每分钟发送10,000条消息。疯狂的是,亚马逊不支持批量请求。 - Mike Miller
在EC2实例中,您有一个特定的请求限制。但是亚马逊不会告诉您它的数量......因此,您应该启动大约15个t2.micro实例,以便每个EC2都有自己的请求限制。采用这种方法,您的进程将比以前快15倍。 - Barbaros Alp
令人惊讶的是,AWS 不支持此功能 - SNS 推送只是一个附加功能,并不能在实际场景中使用。 - RunLoop
1个回答

5
看起来亚马逊提供了几种添加端点/令牌的方法,包括CSV导入器(但一次仅限于2MB的csv文件)。他们还提供了API和示例Java应用程序,用于批量上传令牌(link)。
关于主题订阅点,Amazon SNS员工在这里进行了解释,基本上说明不幸的是没有可用的批量API。
当涉及频繁创建自定义段/主题时,还有一些其他第三方推送通知提供者可能更能满足您的需求:
  1. OneSignal(披露:我经营这家公司)
  2. MixPanel
  3. Parse

今天,Mixpanel不支持亚马逊消息系统(ADM)。不确定Parse是否支持ADM。 - Tobliug
嗨Gdeglin,我也有类似的问题,我们正在考虑使用OneSignal。我们希望向每个用户发送个性化通知。如何使用OneSignal向超过一百万用户基础发送个性化通知? - pankaj
@pankaj 你好!请在StackOverflow上开启一个新的帖子来提出你的问题或者联系OneSignal团队的support@onesignal.com来获取指导。 - Gdeglin
@Gdeglin发布了一个新问题:http://stackoverflow.com/questions/40083914/sending-personalized-push-notifications-using-onesignal - pankaj
@Gdeglin - OneSignal如何能免费提供所有这些服务?作为客户,我如何确信您在未来2年内仍将存在?Parse曾经是免费的,并得到了Facebook的支持,但最终还是关闭了。 - Pritam Barhate
1
我并不担心“免费”这一点,让我担心的是“我们通过使用我们聚合的数据来赚钱以改善网络和移动体验。我们还为企业客户提供定制解决方案。” 我想知道“改善网络和移动体验”是什么意思,以及您实际上如何处理这些数据。 - user5890979

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接