为 AWS 中的多个消费者选择消息队列方法

Selecting message queue approach for multiple consumers in AWS

请帮助为以下用例选择 MQ app/system/approach:

检查特定用户的传入消息 -> 阅读消息(如果可用) -> 从队列中删除,最好留在 AWS 中。

上下文:

我在 AWS。最初想到 SQS,但我读得越多,它看起来就越不适合 - 无法以按收件人过滤的方式设置消息收件人 ID 等,但也许我错了。 我还考虑过的选项之一是只使用 DynamoDB 的 "messages" table,分区键是 userId,排序键是 messageId,这样我就可以很容易地由用户查询,但是担心有成本。

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

谢谢! D

你在这两点上都是对的:

  • 由于您指出的限制,SQS 将无法工作。
  • DynamoDB 可以,但成本很高。

我可以提出以下建议:

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

我的建议与 Twitter 管理每个用户的新闻源和主页的方式非常相似。

应该也很便宜