Amazon SQS 子队列

Amazon SQS sub-queues

我正在研究将我们现有的消息队列 (Mosquitto MQTT) 移动到云端 (Amazon SQS) 的可行性。

我们现有的服务使用子队列的概念,这样用户就不会收到不适合他们的消息。例如:

/MyQueueName/user1/

/MyQueueName/user2/

/MyQueueName/user3/

等等

用户计算机上的一个应用程序运行订阅了与他们自己的用户标识相关的子队列。然后他们只会收到与他们相关的消息。

SQS 似乎没有创建子队列的能力,也没有灵活地过滤消息属性。我可以允许将所有消息发送到所有计算机,然后仅在内容相关时才采取行动,但这似乎很浪费,尤其是考虑到我们目前正在讨论 20,000 多个子队列。

如何在 SQS 上最好地完成这项工作? 我可以在 QueuenameUsername 上以编程方式创建队列,当有消息要从源传递或用户订阅时,然后在用户取消订阅时删除队列。然而,这似乎不是最好的做事方式;创建数千个单独的队列,并且需要一些代码来管理创建,更具体地说,以正确的时间间隔删除队列。

任何见解表示赞赏。

谢谢, 菲尔

我认为 SQS 对此不起作用。是的,您可以创建队列,但要记住的一件事是只有一个消费者会收到一条消息(即,当您发送到 "topic" 队列时,并不是每个收听队列并获取消息的人都会收到它).

一个澄清的问题:处理消息的顺序重要吗?

如果您想在 AWS 领域进行此操作,我尝试采用的方法是,我实际上会使用带有 HTTPS 端点的 SNS。您可以动态订阅和取消订阅您创建的 SNS 端点,缺点是端点必须位于 public 互联网上。每次有人向 SNS 主题发布消息时,所有订阅者都会收到它。