我正在研究将现有消息队列(Mosquitto )移动到云(Amazon )的可行性。
我们现有的服务使用子队列的概念,这样用户就不会收到不适合他们的消息。例如:
/MyQueueName/user1 1/
/MyQueueName/user2 2/
/MyQueueName/user3 3/
等。
在用户计算机上运行的应用程序订阅与他们自己的userid相关的子队列。然后他们只接收与他们相关的信息。
SQS似乎没有创建子队列的能力,也没有过滤消息属性的灵活性。我可以允许将所有消息发送到所有计算机,然后只有在内容相关的情况下才会对其采取行动,但这似乎是浪费,特别是考虑到我们目前正在20,000+子队列区域进行讨论。
如何最好地在SQS上实现这一点?我可以在QueuenameUsername上以编程方式创建队列,当有消息要从源传递或用户订阅时,然后在用户取消订阅时删除队列。然而,这似乎并不是最好的方法;创建数千个单独的队列,并且需要一些代码来管理创建,更具体地说,是以正确的间隔删除队列。
任何有洞察力的人都很感激。
谢谢你,菲尔
发布于 2015-10-20 15:44:17
我不认为SQS会在这方面起作用。是的,您可以创建队列,但是要记住的一点是,只有一个使用者将得到一条消息(即,当您发送到一个“主题”队列时,并不是每个侦听队列并捕获消息的人都会得到它)。
一个澄清的问题:你处理信息的顺序重要吗?
如果您想在AWS-land中这样做的话,我会尝试使用SNS、w/ a HTTPS端点。您可以动态地订阅和取消订阅所创建的SNS端点,这是端点必须位于公共internet上的缺点。每次有人向SNS主题发布消息时,所有订阅者都会得到它。
https://stackoverflow.com/questions/33233045
复制相似问题