aws sqs基础概念和队列参数解析

分布式队列的组成部分

  • 生产者,向队列发送消息的组件
  • 消费者,接受队列消息
  • 队列,多个sqs服务器存储冗余存储消息

sqs自动删除超过最大留存时间的消息(默认4天),可以通过SetQueueAttributes调整为(60 s to 1,209,600 s (14 天) )

消息的生命周期

  • 生产者向sqs发送消息,在多个服务器上冗余存储

  • 消费者请求消费,可见性超时开始计时,消息并未删除但不接受后续消费请求

  • 消费者消费完毕删除消息,避免可见性超时后重复消费

队列类型

标准队列

由于分布式存储,sqs副本服务器可能故障导致消费和删除消息失败,导致重复消费。需要将application设置为幂等的

fifo队列

  • 发送消息时消息本身带有不重复id,sqs按照发送顺序处理
  • 如果多个生产者向同一个消息组id发送,则在消费组中按照先后顺序处理
  • 消息仅在同一个消息组中有序,不同消息组的消息无序
  • 队列中的消息组数量没有上限
  • 无法接收指定消费组的消息
  • 接受具有多个消息组id的队列时,sqs首先尝试返回尽可能多的具有相同消息组 ID 的消息
  • fifo队列允许重试逻辑
  • fifo在标准队列的基础上引入了exactonce,需要配置基于内容的重复数据删除(使用SHA-256 hash生成去重id)或者显示提供去重id
  • 不能将现有的标准队列转换为 FIFO 队列,必须为应用程序创建一个新的 FIFO 队列
  • fifo队列不支持每个消息延迟,只支持每个队列延迟
  • fifo的数据在分片中存储,请求接近或超过分片上限会自动添加新分片,分片的利用率较低可能会减少分片,此操作对用户透明
  • 消息所处的分片取决于消息组id的hash,建议大量使用消息组id区分分片
  • sqs异步缓冲客户端不支持fifo队列
  • 不兼容fifo队列的服务包括,s3事件通知,asg生命周期钩子,iot规则行动,lambda死信队列

队列比较

队列类型标准队列FIFO 队列
吞吐量无限吞吐量,支持每个 API 操作每秒几乎无限次的 API 调用高吞吐量 ,如果使用批处理,则每个 API 方法(发送,接受,删除),FIFO 队列每秒最多支持 3,000 条消息。每秒 3000 条消息指可能 300 个 API 调用,每个调用都包含10 条消息。可以提限
不使用批处理,FIFO 队列的每个 API 方法(发送,接受,删除)每秒最多支持 300 个 API 调用
数据重复at least onceexact once
数据有序尽力排序 ,可能乱序
img
先进先出传送 — 严格保留消息的发送和接收顺序。
img
使用场景当吞吐量很重要时当事件的顺序重要时

队列参数

可见超时

 	            Visibility Timeout

  • 可见性超时设置从队列接收的消息(由一个使用者接收)对其他消息使用者不可见的时间长度
  • 如果消息必须只接收一次,则使用者必须在可见性超时期间删除该消息
  • 默认的可见性超时设置为30秒
  • 为了获得最佳性能,将可见性超时设置为大于 AmazonWebServicesSDK 读超时

消息保留期

  • 保留不会被删除的消息的时间量

  • 默认4天,保留时间从60秒到1,209,600秒(14天)不等

  • 消息的过期时间总是基于其原始的队列时间戳。当消息移动到死信队列时,队列时间戳保持不变。例如,如果一条消息在被移动到死信队列之前在原始队列中停留1天,并且死信队列的保留期被设置为4天,那么该消息将在3天后从死信队列中删除

延迟时间

img

  • 适用于使用者需要额外的时间来处理消息。发送到队列的任何消息在延迟期间对使用者都是不可见的
  • 队列的默认(最小)延迟为0秒,最多15分钟
  • 对于标准队列该设置不可回溯的(不会影响队列中已有消息的延迟)。对于 FIFO 队列是可追溯的

最大消息大小

  • 支持的最小消息大小为1字节,最大大小为262,144字节(256 KB)
  • 要发送大于256kb 的消息,可以使用 sqs 扩展的 Java 客户端库。该消息包含对 AmazonS3中消息有效负载的引用。最大有效载荷大小为2G

接收消息等待时间

  • 接收消息等待时间是轮询等待消息可用以接收的最长时间
  • 最小值为0秒,最大值为20秒
  • 在服务端(设置上限),如果将接收消息等待时间设置为0,则接收请求使用短轮询
  • 在客户端(实际轮询时间),当 ReceiveMessage 请求的 WaitTimeSecond 参数设置为0时,将发生短轮询

Redrive allow

  • 定义哪些源队列可以使用此队列作为死信队列
  • 通过 ARN 指定最多10个源队列的列表
  • 源队列必须由相同的帐户拥有,并且必须与死信队列驻留在相同的区域中

死信队列

  • MaxReceiveCount 是使用者在移动到死信队列之前尝试从队列接收消息而不删除消息的次数

  • DLQ 队列类型(标准或 FIFO)必须与源队列匹配

  • 源队列和死信队列必须由相同的帐户拥有,并且必须与死信队列驻留在相同的区域中

队列权限

授权其他账户访问sqs权限的示例

{"Sid": "__sender_statement","Effect": "Allow","Principal": {"AWS": ["12323112441"]},"Action": ["SQS:SendMessage"],"Resource": "arn:aws-cn:sqs:cn-north-1:xxxxxxxxxxx:"
},
{"Sid": "__receiver_statement","Effect": "Allow","Principal": {"AWS": ["12323112441"]},"Action": ["SQS:ChangeMessageVisibility","SQS:DeleteMessage","SQS:ReceiveMessage"],"Resource": "arn:aws-cn:sqs:cn-north-1:xxxxxxxxxxx:"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【408真题】2009-13

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

JMH 微基准测试(性能测试)

写本文主要是简单记录一下JMH的使用方式。JMH全名是Java Microbenchmark Harness,主要为在jvm上运行的程序进行基准测试的工具。作为一个开发人员,在重构代码,或者确认功能的性能时,可以选中这个工具。 本文场景:代码重…

VBA即用型代码手册:删除Excel中空白行Delete Blank Rows in Excel

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建…

IDEA中好用的插件

IDEA中好用的插件 CodeGeeXMybatis Smart Code Help ProAlibaba Java Coding Guidelines​(XenoAmess TPM)​通义灵码常用操作 TranslationStatistic CodeGeeX 官网地址:https://codegeex.cn/ 使用手册:https://zhipu-ai.feishu.cn/wiki/CuvxwUDDqiErQU…

Android 自定义图片进度条

用系统的Progressbar,设置图片drawable作为进度条会出现图片长度不好控制,容易被截断,或者变形的问题。而我有个需求,使用图片背景,和图片进度,而且在进度条头部有个闪光点效果。 如下图: 找了…

速盾:流量攻击防护DDOS有哪几种有效的防御措施?

DDoS(分布式拒绝服务)攻击是一种网络攻击方式,攻击者通过向目标服务器发送大量的请求,超出其处理能力,导致服务器无法正常运行,从而使服务中断或降级。为了保护网络安全,减少DDoS攻击对网站和服…

Kafka(十三)监控与告警

目录 Kafka监控与告警1 解决方案1.2 基础知识JMX监控指标代理查看KafkaJMX远程端口 1.3 真实案例Kafka Exporter:PromethusPromethus Alert ManagerGrafana 1.3 实际操作部署监控和告警系统1.2.1 部署Kafka Exporter1.2.2 部署Prometheus1.2.3 部署AlertManger1.2.4 添加告警规…

大疆上云API本地部署与飞机上云

文章目录 前言一、安装基础环境1. EMQX 安装(版本4.4.0)2. MySql 安装(版本8.0.26)3. Redis 安装 二、部署后端(JDK必须11及以上)三、部署前端四、成为大疆开发者五、飞机注册上云六、绑定飞机七、无人机状态查看八、直播流查看 前言 大疆上云API官方文…

HarmonyOS鸿蒙应用开发——ArkTS的“内置组件 + 样式 + 循环和条件渲染”

一、内置组件是咩? 学过前端的都知道,一个组件就是由多个组件组成的,一个组件也可以是多个小组件组成的,组件就是一些什么导航栏、底部、按钮......啥的,但是组件分为【自定义组件】跟【内置组件】 【自定义组件】就…

Web开发核心

文章目录 1.http协议简介2.http协议特性3.http请求和响应协议4.最简单的Web程序5.基于flask搭建web⽹站6.浏览器开发者⼯具(重点) 1.http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于 万维网(WWW:Norld W…

【狂神说Java】Redis笔记以及拓展

一、Redis 入门 Redis为什么单线程还这么快? 误区1:高性能的服务器一定是多线程的? 误区2:多线程(CPU上下文会切换!)一定比单线程效率高! 核心:Redis是将所有的数据放在内…

用于时间序列概率预测的蒙特卡洛模拟

大家好,蒙特卡洛模拟是一种广泛应用于各个领域的计算技术,它通过从概率分布中随机抽取大量样本,并对结果进行统计分析,从而模拟复杂系统的行为。这种技术具有很强的适用性,在金融建模、工程设计、物理模拟、运筹优化以…

【C语言】C语言-设备管理系统(源码+数据文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

AI大模型:大数据+大算力+强算法

前言:好久不见,甚是想念,我是辣条,我又回来啦,兄弟们,一别两年,还有多少老哥们在呢? 目录 一年半没更文我干啥去了? AI大模型火了 人工智能 大模型的理解 为什么学习…

ComfyUI完全入门:图生图局部重绘

大家好,我是每天分享AI应用的萤火君! 这篇文章的主题和美女有关,不过并不是教大家生产美女视频,而是讲解 ComfyUI 的图生图局部重绘,其中将会以美女图片为例,来展示局部重绘的强大威力。 先看看效果&…

2024年5月26日 十二生肖 今日运势

小运播报:2024年5月26日,星期日,农历四月十九 (甲辰年己巳月庚寅日),法定节假日。 红榜生肖:马、猪、狗 需要注意:牛、蛇、猴 喜神方位:西北方 财神方位:…

java hashmap在项目中的使用

java hashmap在项目中的使用 1,缓存机制: 在需要频繁访问数据但又不想每次都从数据库或远程服务获取的场景中,可以使用 HashMap 作为缓存。例如,在一个 Web 应用程序中,用户信息可能只需要在登录时从数据库检索一次&a…

解释器和编译器(程序语言基础)

一、解释器 解释器则是一种逐行或逐段地解释执行源代码的工具。解释器会直接读取源代码,并在运行时逐行或逐段地解释执行代码,不生成独立的目标代码文件。解释器适用于一些动态语言,允许用户在代码执行过程中进行交互,更容易调试…

【linux_常用的指令】

笔记 1连接远程主机2 两台主机间复制2.1 查看当前目录2.2 普通复制 3 创建能运行sudo命令的用户3.1 更改用户admin的密码3.2 切换到admin用户,并且启动一个新的shell3.3 更改文件或目录的权限 4 切换目录5 解.tar.gz格式的压缩包6 运行.sh文件7 查看当前目录的所有文…

泛型中K T V E ? Object等分别代表的含义

E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型&…