示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载导读本文基于 aws-doc-sdk-examples 仓库中javav2/usecases/topics_and_queues目录下的官方示例系统讲解如何使用 AWS SDK for Java V2 构建一个主题Topic 队列Queue的发布订阅Publish/Subscribe交互式命令行应用。你将掌握 Amazon SNS 主题的创建含标准与 FIFO 两种模式、Amazon SQS 队列的订阅、基于内容哈希的消息去重、按 tone 属性进行订阅过滤、消息发布与轮询消费的完整调用链并了解仓库中集成测试Integration Test如何验证这一全流程。发布订阅架构SNS 推送与 SQS 轮询的互补发布订阅Publish/Subscribe是一种信息传递机制广泛用于社交媒体、软件内部模块通信等场景。其核心价值在于生产者和消费者解耦生产者只负责发布消息到主题不关心谁在消费订阅者按需接收消息不依赖生产者。这种机制让消息传递更灵活、更健壮。本示例组合了 AWS 两项核心消息服务Amazon SNS 是推送push服务消息由 SNS 主动推送到各类端点endpoint例如邮箱地址、移动应用端点或 SQS 队列。你只需调用publishAPI 将消息发布到主题SNS 负责将消息投递给所有订阅者。Amazon SQS 采用轮询polling消费订阅者需要显式调用接收消息ReceiveMessage的 API 才能获取消息。任何代码都可以轮询队列消息会一直保留在队列中直到被显式删除因此消费节奏完全由订阅方控制处理方式更灵活。单独使用 SNS 即可实现发布订阅但将 SNS 与 SQS 组合起来能够在消息消费方式上获得更大的灵活性这正是本示例的核心设计思路。示例还支持启用 FIFOFirst-In-First-Out先进先出队列语义以及为订阅添加过滤规则演示更精细的消息路由控制。上图展示了本示例中主题与队列的配置分支首先判断是否使用 FIFO 主题若使用 FIFO再进一步决定是否启用基于内容的去重无论哪种主题类型均可选择无过滤订阅或带过滤订阅且 FIFO 主题必须搭配 FIFO 队列。示例整体流程一个 11 步的端到端工作流本示例不是一个完整的生产级应用而是一个用于探索发布订阅架构的交互式命令行应用。它通过Scanner读取用户输入引导完成从资源创建到清理的完整闭环。核心实现位于 SNSWorkflow.java源码注释明确列出了 11 个步骤给出用户可选的若干配置项FIFO 与否、去重方式等创建一个 Amazon SNS 主题创建一个 Amazon SQS 队列获取 SQS 队列的 ARNAmazon Resource Name属性为队列附加一条 IAM 策略授权 SNS 服务向队列发送消息将 SQS 队列订阅到主题可选附加过滤策略向主题发布消息轮询队列并展示收到的消息删除已接收的消息批量删除取消订阅并删除队列删除 SNS 主题。其中步骤 5 是 SNS→SQS 集成能否成功的关键没有这条队列策略SNS 服务就没有权限把消息投递到你的队列。环境准备与 Maven 工程配置前提条件在运行示例前需要按 AWS SDK for Java 2.x 官方文档完成开发环境配置安装 JDK、配置 AWS 凭证与 Region。示例中的两个客户端均使用EnvironmentVariableCredentialsProvider从环境变量读取凭证并固定使用Region.US_EAST_1SnsClient snsClient SnsClient.builder() .region(Region.US_EAST_1) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .build(); SqsClient sqsClient SqsClient.builder() .region(Region.US_EAST_1) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .build();如果实际运行区域不是 us-east-1需要同时修改客户端 Region、IAM 策略中的 Region 占位符以及main方法传入的 accountId 参数。依赖清单本示例使用 Apache Maven 管理依赖POM 文件位于 pom.xml。工程通过dependencyManagement引入 AWS SDK BOM版本2.29.45统一管控各 SDK 模块版本核心依赖如下依赖用途software.amazon.awssdk:snsSNS 客户端创建/删除主题、订阅、发布消息software.amazon.awssdk:sqsSQS 客户端创建/删除队列、轮询与删除消息software.amazon.awssdk:sso/ssooidc支持 SSO 凭证链等身份认证场景com.google.code.gson:gson2.10.1构造订阅过滤策略FilterPolicy的 JSONorg.junit.jupiter5.9.2JUnit 5 测试框架工程以 Java 17 为编译目标java.version、maven.compiler.source/target均为 17运行前请确保本机 JDK 版本匹配。IAM 权限要求运行本示例需要同时具备SNS 与 SQS 的最小权限涉及的操作包括CreateTopic、DeleteTopic、Subscribe、Unsubscribe、SetSubscriptionAttributes、Publish、CreateQueue、DeleteQueue、GetQueueUrl、GetQueueAttributes、SetQueueAttributes、ReceiveMessage、DeleteMessageBatch。AWS 官方建议遵循**最低权限least privilege**原则只授予完成本任务所必需的权限并注意该代码并未在所有 AWS 区域完成测试。交互式配置详解逐个回答 CLI 提示运行SNSWorkflow时程序会通过标准输入逐项询问配置下面按文档原样逐一说明每个选项的含义与约束。第 1 步选择主题类型与去重策略Would you like to work with FIFO topics? (y/n)FIFO 主题在创建时即确定选择它会在后续解锁去重与消息排序等能力。输入y后程序会继续询问Use content-based deduplication instead of a deduplication ID? (y/n)去重Deduplication仅对 FIFO 主题可用作用是防止订阅者对判定为重复的事件重复响应。当一条消息发布到 SNS FIFO 主题且被判定为重复时在五分钟去重区间内该消息会被接受但不会投递。内容去重content-based deduplication用消息内容的哈希值作为去重 ID无需为每条消息手工指定去重 ID关闭内容去重则每条消息都必须显式携带去重 ID。从源码看选择内容去重后程序会紧接着要求输入 group ID若关闭内容去重则依次要求输入 deduplication ID 和 group ID见 SNSWorkflow.java。第 2 步创建 SNS 主题Enter a name for your SNS topic:主题命名规则长度 1256 个字符可包含大小写 ASCII 字母、数字、下划线与连字符若选择了 FIFO 主题程序自动追加.fifo后缀FIFO 主题的强制要求例如输入topic1000会得到topic1000.fifo。代码中FIFO 与非 FIFO 主题分别由createFIFO与createSNSTopic两个方法创建对应关系见下表分支方法关键属性非 FIFOcreateSNSTopic仅传主题名FIFO 内容去重createFIFOFifoTopictrue、ContentBasedDeduplicationtrueFIFO 手动去重 IDcreateFIFOFifoTopictrue、ContentBasedDeduplicationfalse第 3 步创建 SQS 队列Enter a name for an SQS queue.队列命名规则长度 180 个字符可包含大小写 ASCII 字母、数字、下划线与连字符若选择了 FIFO 主题程序同样为队列名追加.fifo后缀FIFO 队列的强制要求。为每个订阅者建立独立队列是推荐做法——这样可以分别为不同队列定制消息的消费方式和过滤规则。源码中createQueue方法在selectFIFOtrue时通过QueueAttributeName.FIFO_QUEUE属性值为true创建 FIFO 队列否则创建标准队列见 SNSWorkflow.java。第 45 步获取队列 ARN 与附加 IAM 策略getSQSQueueAttrs方法通过GetQueueAttributes请求指定QueueAttributeName.QUEUE_ARN取出队列 ARN供后续订阅使用。随后程序构造如下 IAM 队列策略通过SetQueueAttributes属性名Policy附加到队列上核心是授权 SNS 服务主体sns.amazonaws.com向该队列执行sqs:SendMessage并用ArnEquals条件把来源限定为本次创建的 SNS 主题{ Statement: [ { Effect: Allow, Principal: { Service: sns.amazonaws.com }, Action: sqs:SendMessage, Resource: arn:aws:sqs:us-east-1:accountId:sqsQueueName, Condition: { ArnEquals: { aws:SourceArn: arn:aws:sns:us-east-1:accountId:topicName } } } ] }其中accountId为程序启动时传入的命令行参数sqsQueueName与topicName由运行时用户输入决定。从源码结构看该策略中的 Region 目前硬编码为us-east-1跨区域运行需同步修改。第 6 步订阅队列并可选配置过滤Filter messages for queue name.fifos subscription to the topic topic name.fifo? (y/n)仅当选择 FIFO 主题时才会出现此选项。SNS 提供了多种消息过滤方式本示例只演示按预定属性集合过滤。若输入y程序展示如下属性菜单You can filter messages by one or more of the following tone attributes. 1. cheerful 2. funny 3. serious 4. sincere Enter a number (or enter zero to stop adding more)可选择一个或多个 tone 属性输入0结束选择。源码中subQueue方法完成两步操作先通过Subscribe协议sqs、端点为队列 ARN、returnSubscriptionArntrue建立订阅若存在过滤项再通过SetSubscriptionAttributes将订阅属性FilterPolicy设置为 Gson 构造的 JSON形如{tone: [cheerful, funny]}只有携带了匹配的tone消息属性的消息才会被投递到该队列见 SNSWorkflow.java。第 7 步发布消息创建主题并完成订阅后程序进入消息发布阶段Enter a message text to publish.所有配置分支都包含消息文本输入。对于 FIFO 主题还需提供以下字段Enter a message group ID for this message.group ID 用于 FIFO 消息分组同一分组内的消息严格按序投递最大 128 个字符可包含字母数字a-z, A-Z, 0-9与标点符号。Enter a deduplication ID for this message.当 FIFO 主题未启用内容去重时必须输入规则同 group ID最大 128 个字符。若订阅配置了过滤规则发布时还可以为消息附加 tone 属性Add an attribute to this message? (y/n) y1. cheerful 2. funny 3. serious 4. sincere Enter a number for an attribute:源码中pubMessageFIFO根据是否附加属性、是否内容去重的组合构造四种PublishRequest涉及messageGroupId、messageDeduplicationId与messageAttributes三个可选字段附加属性时以MessageAttributeValue的String类型写入键名为所选 tone 值见 SNSWorkflow.java。第 811 步轮询展示与资源清理发布完成后程序等待用户按键然后调用receiveMessages轮询队列ReceiveMessageRequest receiveMessageRequest ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build();若发布时未附加属性使用常规接收请求若附加了 tone 属性则额外通过messageAttributeNames指定返回该消息属性以便展示完整的属性信息单次最多接收 5 条消息。随后展示每条消息的messageId与完整 body。接下来按顺序执行deleteMessages通过DeleteMessageBatch批量删除已接收消息 →unSub取消订阅并deleteSQSQueue删除队列 →deleteSNSTopic删除主题完成资源的彻底清理避免残留计费资源。测试用例FIFO 与非 FIFO 两条全链路验证仓库同时提供了集成测试 AWSSNSTest.java用 JUnit 5Tag(IntegrationTest)、TestMethodOrder串行执行两条完整工作流TestWorkflowFIFOOrder 1创建 FIFO 主题topic1000.fifo手动去重模式创建 FIFO 队列queue1000.fifo以固定groupIdgroup1、deduplicationIDdup100发布消息 Hello there随后轮询、批量删除消息并清理全部资源TestWorkflowNonFIFOOrder 2创建标准主题topic1003与标准队列queue1003发布后完成同样的消费与清理流程。测试中在发布与轮询之间通过TimeUnit.SECONDS.sleep(2)等待消息投递这是 SNS→SQS 异步投递场景下常见的等待策略。运行集成测试需通过 Maven Surefire 插件groupsIntegrationTest/groups执行mvn test由于测试会真实创建 AWS 资源运行测试同样可能产生 AWS 账户费用。运行示例程序启动方式示例通过main方法运行需要且仅需要一个命令行参数——AWS 账户 ID用于构造 IAM 队列策略中的 ARNmvn compile exec:java -Dexec.mainClasscom.example.sns.SNSWorkflow -Dexec.args123456789012或先mvn package打包后通过java -cp运行。若参数缺失程序会打印 Usage 提示并退出Usage: fifoQueueARN Where: accountId - Your AWS account Id value.重要提醒运行本示例或运行测试都可能产生 AWS 账户费用建议按最小权限原则为运行凭证授予权限只授权完成任务所需的最低权限代码未在所有 AWS 区域测试请确认目标区域可用示例默认us-east-1仓库仅用于查看与运行示例运行前请确认凭证、Region 与 IAM 权限均已就绪。小结通过javav2/usecases/topics_and_queues这一示例你可以完整看到 AWS SDK for Java V2 中 SNS 与 SQS 协作的全部关键调用标准/FIFO 主题创建、队列 ARN 获取、IAM 队列策略、订阅与FilterPolicy过滤、带 group ID 与 deduplication ID 的 FIFO 发布、轮询消费与批量删除。示例同时提供了 pom.xml、主程序 与 集成测试 三份可直接对照学习的材料适合作为深入理解 AWS 消息架构与 Java V2 SDK 消息服务的上手起点。赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐AWS SDK for C 实战使用 SNS 主题与 SQS 队列实现带过滤与 FIFO 的发布订阅AWS SDK for C 实战使用 SNS 主题与 SQS 队列实现带过滤与 FIFO 的发布订阅 本篇文章基于 aws doc sdk example示例工程教程后端AWS .NET 示例用 SNS 主题 SQS 队列实现发布订阅、FIFO 去重与过滤实战TopicsAndQueuesAWS .NET 示例用 SNS 主题 SQS 队列实现发布订阅、FIFO 去重与过滤实战TopicsAndQueues 导读 本文基于 AWS 官方示例工程教程后端使用 AWS SDK for Kotlin 构建 SNS 主题与 SQS 队列的发布/订阅、过滤与 FIFO 实战指南使用 AWS SDK for Kotlin 构建 SNS 主题与 SQS 队列的发布/订阅、过滤与 FIFO 实战指南 本文是 AWS 官方代码示例仓库中 ko示例工程教程后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
搞定手机界面设计完整流程,老手避坑指南 搞定手机界面设计完整流程,老手避坑指南 网站被黑挂马,后台突然多出几个乱七八糟的跳转链接,或者用户投诉打开网页看到满屏广告,这种时候你慌不慌?别急,先别盲目重装系统,那治标不治本。很多人一遇到安全问题就乱删文件,结果把正常代码也搞坏了,甚至… · 2026/9/27 3:29:25
共模电流与PCB接地设计:EMC硬件整改的实用技术指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 3:29:19
当自动驾驶遇见纽北:极限赛道测试背后的技术逻辑与架构选型 我是AI时代的无业游民,我游荡在现实与意念之间当自动驾驶遇见纽北:极限赛道测试背后的技术逻辑与架构选型
最近,科技圈里有个话题悄然走红:为什么一家手机与智能家居起家的厂商,要让无人驾驶汽车去挑战被称为“绿色地狱… · 2026/9/27 3:29:13
网站代建设费用吗?5年实战避坑指南与源码解析 网站代建设费用吗?5年实战避坑指南与源码解析 别再被那些花里胡哨的模板网站忽悠了。很多老板花了几千块,拿回来一个套壳站,打开慢、样式丑,改个颜色还得求供应商,这钱花得冤不冤?我干了十年建站,见过太多这种“电子废品”。今天这篇 避坑指南… · 2026/9/27 4:16:42
位移传感器没信号?先别拆,万用表五步定位法 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:16:36
嵌入式硬件调试五法:串口打印、逻辑分析仪、JTAG/SWD等实战决策指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:16:36
SpringBoot+微信小程序图书管理系统实战:登录、借阅与部署全解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:16:36
Docker多阶段构建实战:让Nginx镜像从400MB瘦身到200MB,体积砍半! 一、实验背景 在上一节实验中,我们基于 CentOS 7 构建了 YUM 版 Nginx 镜像,但镜像体积高达 400MB。这是因为 CentOS 7 基础镜像本身就包含大量系统工具和库,而容器运行 Nginx 实际上并不需要完整的操作系统环境。 多阶段构建(Mul… · 2026/9/27 4:16:30
搞懂怎么给网站做超链接,源码下载避坑指南 搞懂怎么给网站做超链接,源码下载避坑指南 备案流程一头雾水?很多新手刚拿到服务器,盯着后台那些ICP备案号、域名解析记录,脑子直接宕机。别慌,先别管备案那些繁琐的表格和审核周期,咱们先把手头最基础的活干完。如果你是从 源码下载… · 2026/9/27 4:16:30
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01