我需要帮助澄清Amazon SQS的高级用例

时间:2016-07-13 12:47:55

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-sqs

所以我需要第二双眼睛来纠正或确认我对Amazon SQS的理解。根据我的理解,您可以向一个队列添加无限量的消息。消息的大小可以是256 KB,如果需要大于此消息,则可以使用amazon s3来存储2 GB。在线阅读,看来这个排队服务有很多用例。例如,SQS的一个用例可以充当数据库缓冲区。

但这就是我要做的事情。我正在寻找一个实时的短信系统。我当前的功能更像是一个留言板,因此实现只是插入数据库然后读取数据并将其打包到JSON以插入SQLITE手机。这很有效,但我收到了很多人要求实时的请求。

所以我想知道的是,我可以利用amazon SQS来编写和阅读聊天应用程序的消息吗?因此,在SQS的理论用例中,将有一个要写入的消息队列,并且每秒从该队列中提取以检查移动设备上的消息。但在这里,我很困惑。既然你不能" Query"来自队列的特定消息,每个用户有一个队列然后是应用服务器读取的通用队列是否有意义?或者我只是说疯了,应该花费认知资源考虑在Ec2实例上实现开放连接?

任何帮助都会很棒,

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用Amazon SNS将聊天消息推送到您的移动设备?每个用户发布一个主题,读者订阅该主题。如果应用程序没有运行,您只需要丢失消息即可。

答案 1 :(得分:0)

如果您只有少数(或者可能少于100个)用户,您可能会想到每个用户有一个SQS队列。如果不是这样,那么解决方案在操作上是不可行的。

如果您有一个通用队列,SQS不会提供帮助,因为它不允许查询所有可用消息中的给定字段。

我可以为您的用例考虑以下选项:

  1. 设置一个Redis群集,可能在Amazon ElastiCache上。每个用户都有一条消息List
  2. MySQL中的一个Messages表,可能在AWS RDS上。这将为查询给定用户的消息提供一种简便方法。
  3. 您也可以在#2中使用DynamoDB