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

2023-12-20

在 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(使用前将#替换为@)

通过过滤将消息从 Amazon SNS 路由到 SQS 的相关文章

随机推荐

  • 如何在 Android SOAP Webservices 中将 InputStream 数据转换为字符串

    当我使用来自 Android 的肥皂 Web 服务时 我想在输出字符串中显示结果 如何将该输入流转换为 Sting package com venkattt pack import java io BufferedReader import
  • Visual Studio 总是为 App.config 选择错误的 xsd

    首先 我有一个具有以下配置的 NET 4 0 应用程序
  • 在 api 调用中更新 2 个猫鼬模式

    目前我正在尝试在 api 调用中更新两个不同的用户架构 第一个模式是登录用户模式 我们给它起一个名字 Tom 第二个模式是注册该应用程序的其他用户 我们给它一个名称 John 架构代码 架构 js var mongoose require
  • JPQL 中的 timestampdiff 等效项(不使用条件)

    我想在 JPQL 中使用以下 mysql 函数 TIMESTAMPDIFF YEAR some start date CURDATE 另外 我不必在 JPA 中使用 Criteria 因为我们正在遵循编写命名查询 JPQL 的实践 那么 这
  • Android studio 始终使用 JDK 7,不要切换到 JDK 8

    我遇到了一些有趣的问题 当我尝试通过单击来更改 JDK 时文件 gt 项目结构 gt SDK 位置 我将其更改为我的新版本 然后我点击OK然后再次打开此页面 它向我显示了以下内容 为什么不想换JDK 甚至我的 PATH 设置为 JDK 8
  • MFCC 的含义

    我有一个概念问题 我知道什么是梅尔标度以及它代表什么 而且我知道这种频谱图仍然包含太多我需要的信息 我认为如果我们想减少频谱图的信息数量 我们可以使用 MFCC 但我实在不明白MFCC是什么以及它代表什么 我在语音识别过程中使用 MFCC
  • 如何在保留子目录的同时拆分 git 存储库?

    我想要的是类似于这个问题 https stackoverflow com questions 359424 detach subdirectory into separate git repository 但是 我希望拆分为单独存储库的目录
  • F# ionide webshaperserverclient - 如何运行

    我跑步时遇到问题websharperserverclient来自 ionide 项目生成器的模板应用程序 并且在网上找不到任何如何操作的信息 我得到的最接近的东西是这个问题 https stackoverflow com questions
  • 纯JSP页面导航最佳实践?

    在我的 Web 应用程序的各个 JSP 页面之间实现导航链接的最佳方法是什么 假设我有一个list jsp显示项目列表 然后 用户单击其中一项以查看该项目的更多详细信息view jsp 现在我需要一个链接view jsp回到list jsp
  • 我可以使用模型绑定验证 HTTP 请求签名令牌和随机数吗?

    我正在使用 ASP NET MVC 设置一个端点 可以向该端点发出操作和检索数据的请求 基本上是一个 API 我使用 2 legged OAuth 模型来验证请求是否使用密钥和签名方法以及随机数表进行签名 以防止劫持 由于模型绑定在 ASP
  • PHP flock() - 幕后是什么?

    在与 PHP 源码搏斗了半个小时后 我放弃了 P 问题是 在 Gentoo Linux 系统上 PHP freeze 函数调用归结为什么系统调用 我遇到了一些问题 比如每 20 次循环迭代中阻塞 30 秒类问题 我想知道为什么会这样 exa
  • 为什么我在 vue js 中收到“无法读取未定义的属性‘状态’”错误

    我的 store index js 是 import Vue from vue import Vuex from vuex Vue use Vuex export default new Vuex Store state name Alic
  • 反应挂钩。定期运行 useEffect

    我需要定期获取数据并将其更新到屏幕上 我有这个代码 const temperature setTemperature useState useEffect gt fetch urlToWeatherData then function re
  • 从 Excel 中包含逗号分隔值的两个单元格中提取公共值

    有没有一种简单的方法可以从两个以逗号分隔的数字单元格中提取共同的数字 我有单元格 每个单元格中有 12 个逗号分隔的数字 它们并不都是唯一的 有些数字可以重复两次 但不能超过两次 数字都是正数 并且只能是一位或两位数字 我的数据是这样的 它
  • 解析“DateTime.Now”?

    我需要翻译这样的字符串 DateTime Now AddDays 7 转化为它们的等价表达式 我只对 DateTime 类感兴趣 Net 中是否有内置的东西可以帮助我做到这一点 或者我只需要编写自己的小解析器 您可以雇用FLEE http
  • 通知点击事件时的通话活动

    我想在用户下拉通知并点击该通知时调用该活动 我怎样才能做到这一点 Call setLatestEventInfo on the Notification对象 提供一个PendingIntent当他们点击通知抽屉中的您的条目时 就会开始您的活
  • Cypress:使用 cy.intercept() 检查是否尚未进行调用?

    使用 cy intercept 拦截 和存根 几个网络请求 到谷歌标签管理器 但希望在我的测试中尽早进行测试 然后再期望它们被调用 我将如何测试我正在拦截的两条路线haven t被叫了吗 Thanks 您可以利用cy spy命令 cy in
  • 如何在 django admin 中显示布尔属性

    众所周知 显示method在 Django 管理中将值返回为布尔值可以通过设置轻松完成boolean属性 class MyModel models Model def is something self if self something
  • Visual Studio 2022 挂起并显示“正在打开文件...”消息

    当我尝试打开 dbml 文件时 Visual Studio 2022 挂起并显示 正在打开文件 消息 当我打开任何其他文件时不会发生这种情况 我尝试通过以下方式解决这个问题 卸载Devexpress 卸载Visual Studio 2022
  • 通过过滤将消息从 Amazon SNS 路由到 SQS

    在 RabbitMQ 中 可以创建一个交换器 然后将其绑定到多个队列 每个队列都有一个路由键 这使得消息传递架构如下所示 message x foo msg q bar msg q msg logger q 客户端发布消息到message