amazon-web-services - 使用过滤将消息从 Amazon SNS 路由到 SQS

标签 amazon-web-services amazon-sqs amazon-sns

在 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 中执行此操作。我的第一个想法是在各个队列上设置权限以根据主题接受消息,但权限条件的唯一可用字段是:
  • aws:当前时间
  • aws:EpochTime
  • aws:MultiFactorAuthAge
  • aws:主体类型
  • aws:安全传输
  • aws:SourceArn
  • aws:SourceIp
  • aws:用户代理
  • aws:用户 ID
  • 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/

    相关文章:

    python - 为 boto3 SQS 设置端点

    amazon-web-services - 确认 HTTP 上的 SNS 订阅

    python - 如何通过代理使用 Boto3 S3 连接?

    java - 使用 Java 在 Android 项目中获取 AWS 凭证的最简单方法?

    node.js - VPC 内 Lambda 的 SQS 超时

    java - 为什么方法 createPlatformApplication(platformApplicationRequest) 未定义?

    android - 如何在 Android 8 中为 FCM 推送消息指定 Android 通知 channel

    amazon-web-services - 在 Amazon Mechanical Turk 上进行不超过一次的调查

    JavaFX Gradle 构建错误,java.util.zip.ZipException : duplicate entry: META-INF/LICENSE

    python - pysftp 库在 AWS lambda 层中不起作用