通过过滤将消息从Amazon SNS路由到SQS

 捕鱼达人2702938971 发布于 2023-01-19 19:48

在RabbitMQ中,可以创建一个交换,然后将其绑定到多个队列,每个队列都有一个路由密钥.这使得消息传递体系结构如下所示:

           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中执行此操作.我的第一个想法是在各个队列上设置权限以接受基于主题的消息,但是权限条件的唯一可用字段是:

AWS:CURRENTTIME

AWS:EpochTime

AWS:MultiFactorAuthAge

AWS:principaltype

AWS:SecureTransport

AWS:SourceArn

AWS:SOURCEIP

AWS:用户代理

AWS:用户ID

AWS:用户名

这些似乎都不会受到我发布到该message_x主题的任何消息的影响.

当使用Amazon Simple Notification Service扇出到多个简单队列服务队列时,是否可以做这样的事情,每个队列接收发布到该主题的消息子集?

2 个回答
  • 不,这是不可能的.尽管如此,这对他们来说是一个很棒的功能.

    我知道的唯一选择是为每个路由规则创建一个主题,然后发布到正确的主题.它不漂亮,但它完成了任务.如果您有很多规则,则可能需要超过其允许的3000个主题.您可以按照http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_ses_quota上的说明,在其网站上请求增加AWS的主题限制.

    2023-01-19 19:52 回答
  • 这可以通过在SNS中使用消息属性过滤来实现.在将不同的SQS队列订阅到SNS主题后,可以使用SNS API SetSubscriptionAttributes指定要过滤的属性.这将允许具有不同属性的消息路由到正确的SQS队列.

    这也不仅限于SQS队列,而是SNS主题上的任何订阅源.例如,单个SNS主题可以将一组消息发布到Lambda,另一组发送到SQS.

    SDK参考: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/

    2023-01-19 19:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有