在RabbitMQ中,可以创建一个交换,然后将其绑定到多个队列,每个队列都有一个路由密钥。这使得这样的消息传递架构能够实现:
message_x
/ | \
foo-msg_q bar-msg_q msg-logger_q客户端将消息发布到message_x exchange,后者将具有路由键"foo“的仅消息路由到foo-msg_q队列,只将具有路由键"bar”的消息路由到bar-msg_q队列,并将all消息路由到msg-logger_q队列。
我很难想出在AWS里怎么做。我的第一个想法是在各个队列上设置权限,以便根据主题接受消息,但权限条件的唯一可用字段是:
所有这些似乎都不会受到我发布到message_x主题的任何消息的影响。
如果使用向多个简单队列服务队列扇形,每个队列都接收一个发布到主题的消息子集,是否可以这样做?
发布于 2014-03-08 17:54:00
编辑
我无法删除一个可接受的答案,因此由于此功能已经发布,请参阅the answer below以获得现在正确的答案。
原文(现在不正确)答案(为后代):
不不可能。不过,对他们来说,这将是一个很好的特性。 我知道的唯一选择是为每个路由规则创建一个主题,然后发布到正确的主题。它不漂亮,但它完成了任务。如果你有很多规则,你可能需要超过3000的主题,他们所允许的。您可以按照这里的说明( quota ),从其网站上的AWS请求增加主题限制。
发布于 2017-11-24 20:04:24
这可以通过在SNS中使用消息属性筛选来实现。在向SNS主题订阅不同的SQS队列后,可以使用SNS指定要筛选的属性。这将允许具有不同属性的消息被路由到正确的SQS队列。
这也不限于SQS队列,而是SNS主题上的任何订阅源。例如,单个SNS主题可以向Lambda发布一组消息,将另一组消息发布到SQS。
SDK参考资料:SetSubscriptionAttributes.html
这里给出了更多细节,并给出了示例:https://aws.amazon.com/blogs/compute/simplify-pubsub-messaging-with-amazon-sns-message-filtering/
发布于 2022-03-11 03:27:54
AWS现在支持对SNS订阅服务器进行过滤。每个子程序可以设置其过滤所需消息的策略,并丢弃其他消息。如果您不对订阅服务器设置任何策略,它将得到所有消息。请参阅以下https://aws.amazon.com/getting-started/hands-on/filter-messages-published-to-topics/
https://stackoverflow.com/questions/22196890
复制相似问题