在 RabbitMQ 中,可以创建一个交换器,然后将其绑定(bind)到多个队列,每个队列都有一个路由键。这启用了如下的消息传递架构:
message_x
/ | \
foo-msg_q bar-msg_q msg-logger_q
客户端发布消息到
message_x
交换,路由仅限 带有路由键“foo”的消息到 foo-msg_q
队列, 仅限 带有路由键“bar”的消息到bar-msg_q
队列和 全部 发给 msg-logger_q
的消息队列。我无法弄清楚如何在 AWS 中执行此操作。我的第一个想法是在各个队列上设置权限以根据主题接受消息,但权限条件的唯一可用字段是:
这些似乎都不会受到我发布到
message_x
的任何消息的影响。话题。当使用 Amazon Simple Notification Service 扇出多个 Simple Queue Service 队列时,是否可以这样做,每个队列接收发布到主题的消息子集?
最佳答案
这可以通过在 SNS 中使用消息属性过滤来实现。将不同的 SQS 队列订阅到 SNS 主题后,您可以使用 SNS API SetSubscriptionAttributes 指定要过滤的属性。这将允许具有不同属性的消息路由到正确的 SQS 队列。
这也不仅限于 SQS 队列,还包括 SNS 主题上的任何订阅源。例如,单个 SNS 主题可以将一组消息发布到 Lambda,而将另一组消息发布到 SQS。
开发工具包引用:
http://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html
此处通过示例提供了更多详细信息:
https://aws.amazon.com/blogs/compute/simplify-pubsub-messaging-with-amazon-sns-message-filtering/
关于amazon-web-services - 使用过滤将消息从 Amazon SNS 路由到 SQS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196890/