在 RabbitMQ 中,可以创建一个交换器,然后将其绑定到多个队列,每个队列都有一个路由键。这使得消息传递架构如下所示:
message_x
/ | \
foo-msg_q bar-msg_q msg-logger_q
客户端发布消息到message_x
交换,哪些路由only带有路由键“foo”的消息到foo-msg_q
queue, only带有路由键“bar”的消息bar-msg_q
队列,以及all消息发送至msg-logger_q
queue.
我无法弄清楚如何在 AWS 中执行此操作。我的第一个想法是在各个队列上设置权限以根据主题接受消息,但权限条件的唯一可用字段是:
- aws:当前时间
- aws:EpochTime
- aws:MultiFactorAuthAge
- aws:主体类型
- aws:安全传输
- aws:来源Arn
- aws:源IP
- aws:用户代理
- aws:用户ID
- aws:用户名
这些似乎都不会受到我发布到的任何消息的影响message_x
topic.
当使用 Amazon Simple Notification Service 扇出到多个 Simple Queue Service 队列时,是否可以执行类似的操作,每个队列接收发布到该主题的消息子集?
这可以通过在 SNS 中使用消息属性过滤来实现。将不同的 SQS 队列订阅到 SNS 主题后,您可以使用 SNS API SetSubscriptionAttributes 指定要筛选的属性。这将允许具有不同属性的消息路由到正确的 SQS 队列。
这也不限于 SQS 队列,还包括 SNS 主题上的任何订阅源。例如,单个 SNS 主题可以将一组消息发布到 Lambda,将另一组消息发布到 SQS。
SDK参考:http://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html 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/ https://aws.amazon.com/blogs/compute/simplify-pubsub-messaging-with-amazon-sns-message-filtering/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)