为AWS

时间:2016-07-17 17:30:45

标签: amazon-web-services redis queue message-queue amazon-sqs

请帮助为以下用例选择MQ应用程序/系统/方法:

检查特定用户的传入消息 - >阅读邮件(如果有) - >理想情况下,从队列中删除,保留在AWS中。

上下文:

  • 社交网络应用,用户接收消息,即 我需要按收件人ID识别传入的邮件。
  • 该应用每隔30秒对新邮件进行长时间轮询。
  • 邮件大小<1Kb。
  • 根据目前的估计,我每个月总共需要100M +消息检查(但是,消息要少得多,这些只是检查)。
  • 虽然用户确认消息选择OK或Ignore,但不确定MQ系统是否需要ACK支持。

我在AWS。最初想到的是SQS,但是我读的越多,看起来就越不匹配 - 无法以收件人等方式过滤消息收件人ID,但也许我错了。 我还想到的一个选项是只使用DynamoDB的“消息”表,分区键是userId,排序键是messageId,因此我将能够轻松地由用户查询,但是关注成本。

如果可能的话,我更愿意留在AWS内或者至少使用像SQS这样的SAAS,因为我是一个单人的创业公司,我真的想避免头痛支持自托管系统。

谢谢! d

1 个答案:

答案 0 :(得分:1)

这两项都是正确的:

  • 由于你指出的限制,SQS不会工作。
  • DynamoDB会起作用,但需要花费很多。

我可以提出以下建议:

  • 可能在Amazon ElastiCache上创建Redis群集。
  • 在其中,为每个用户设置一个List
  • 每当收到新消息时,请将其附加到相关用户列表中。
  • 要发送消息,只需从用户列表中读取即可。另外,如果需要,请刷新队列。

我的建议与Twitter如何管理每个用户的新闻提要和家庭提要非常相似。

它也应该便宜。