Amazon SQS(Simple Queue Service) 简介

SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它非常简单,消息队列服务可以用来buffer burst, 使整个服务异步处理,不要求组件始终可用.

开发人员最初使用 Amazon SQS 时只需用到五个 API:

CreateQueue、SendMessage、ReceiveMessage、ChangeMessageVisibility 和 DeleteMessage。

Amazon SQS 会尽量保持消息顺序,但是由于队列的分布式特性,SQS无法保证发送消息的先后顺序。每个 Amazon SQS 队列都具有可配置的可见性超时(Default Visibility Timeout)。在从队列中读取消息后的指定时间内,该消息对其他读取者保持不可见。只要消息的处理时间短于可见性超时,每条消息都会得以处理并删除。如果处理消息的组件出现失败或不可用,可见性超时结束后该消息即对读取该队列的任何组件可见。这允许您让多个组件同时从同一队列中读取消息,每个组件负责处理不同的消息。

在 Amazon SQS 返回消息后,该消息会保存在队列中,称之为In Flight状态。删除请求可确认已处理了该消息。如果不删除消息,Amazon SQS 将在另一个接收请求中递送该消息。由于分布式 Amazon SQS 系统中的某台服务器在执行删除时不可用,DeleteMessage 操作未能删除消息的所有副本。该消息副本可能会被再次递送。所以应该在应用中进行相应的设计,以便在再次收到已删除的消息时不会出现错误或不一致。

如果连续 30 天以上时间没有针对某个队列签发以下任何请求,SQS有可能删除该队列:SendMessage、ReceiveMessage、DeleteMessage、GetQueueAttributes 和 SetQueueAttributes。设计应用程序时应将此考虑在内,这点比较恶心,觉得不应该有这样的性质。

短轮询和长轮询(区别是是否采样)

如果使用短轮询,则您从队列中检索消息时,Amazon SQS 会对服务器的一个子集(基于加权随机分布)进行采样,并且仅从这些服务器返回消息。这意味着,特定接收请求可能不会返回您的所有消息。或者,如果您的队列中有少量消息(少于 1 000 条),则意味着,特定请求可能不会返回您的任何消息,而后续请求则会返回您的任何消息。如果您继续从您的队列中检索消息,则 Amazon SQS 会对所有服务器进行采样,您会收到您的所有消息。

使用 Amazon SQS 进行长轮询的一个好处是:在没有消息可返回以答复发送到 Amazon SQS 队列的 ReceiveMessage 请求时,可以减少空响应数量。在发送响应之前,长轮询允许 Amazon SQS 产品等到队列中的消息可用为止。因此,如果连接没有超时,则对 ReceiveMessage 请求的响应将至少包含一条可用的消息(如果有),最多可包含 ReceiveMessage 调用中请求的最大消息数。

Receive Message Wait Time就是设置短轮询还是长轮询的,0代表短轮询,最大到20.

Amazon SQS 使用您需要熟悉的以下三个标识符:

队列 URL

消息 ID

接收句柄

每个队列飞行消息(Messages in Flight)的数量限制为 120,000。消息被队列接收后会处于飞行状态,但尚未从队列中删除。如果达到 120,000 的限制,将会收到一条来自 Amazon SQS 的“OverLimit”错误消息。为避免达到限制,应该在处理消息后将其从队列删除。

延迟队列允许将队列中新消息的传递操作推迟特定的秒数(Delivery Delay)。如果您创建延迟队列,则发送到该队列的任何消息在延迟期间对使用者都不可见。延迟队列类似于可见性超时,因为这两种功能都使得使用者在特定的时间段内无法获得消息。延迟队列和可见性超时之间的区别在于:对于延迟队列,消息在首次添加到队列时是隐藏的;而对于可见性超时,消息只有在从队列取回后才是隐藏的。

默认拒绝和显式拒绝的区别很重要,因为默认拒绝可以被允许覆盖,但是显式拒绝就不能。显示拒绝是并的关系,默认拒绝是或的关系.

原文:http://blog.csdn.net/hongchangfirst/article/details/25877059

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

Amazon SQS(Simple Queue Service) 简介,布布扣,bubuko.com

时间: 2024-10-18 21:42:05

Amazon SQS(Simple Queue Service) 简介的相关文章

Amazon SQS简介 上篇

SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它非常简单,消息队列服务可以用来buffer burst, 使整个服务异步处理,不要求组件始终可用. 开发人员最初使用 Amazon SQS 时只需用到五个 API: CreateQueue.SendMessage.ReceiveMessage.ChangeMessageVisibility 和 DeleteMessage. Amazon SQS 会尽量保持消息顺序,但是由于队列的分布式特性,它无法保证消息的先后

Amazon SQS 延迟队列

延迟队列可让您将针对队列的新消息传递操作推迟特定的秒数.如果您创建延迟队列,则发送到该队列的任何消息在延迟期间对用户都保持不可见.队列的默认(最小)延迟为 0 秒.最大延迟为 15 分钟. 延迟队列类似于可见性超时,因为这两种功能都使得使用者在特定的时间段内无法获得消息.二者之间的区别在于:对于延迟队列,消息在首次添加到队列时 是隐藏的:而对于可见性超时,消息只有在从队列使用后 才是隐藏的.下图说明了延迟队列和可见性超时之间的关系. 要为单条消息 而不是整个队列设置延迟(以秒为单位),请使用消息

SAP Web Service简介与配置方法

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 17.0000pt; margin-bottom: 16.5000pt; margin-left: 0.0000pt; text-indent: 21.0000pt; page-break-after: avoid; text-al

Amazon SQS 消息队列服务

Amazon sqs是亚马逊提供的线上消息队列服务, 可以实现应用程序解耦,以及可靠性保证. sqs提供了两种消息队列, 一种是标准消息队列, 一种是先进先出队列(FIFO), 其区别是FIFO是严格有序的,即消息接收的顺序是按照消息发送的顺序来的, 而标准队列是尽最大可能有序, 即不保证一定为有序, 此外FIFO还保证了消息在一定时间内不能重复发出,即使是重复发了, 它也不会把消息发送到队列上. 队列操作 创建队列 AmazonSQS sqs = AmazonSQSClientBuilder.

Service简介 demos

extends:http://blog.csdn.net/ithomer/article/details/7364024 一. Service简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互.service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序

请教Amazon FBA里面Label Service, Stickerless, Commingled Inventory是什么意思?

Accept Label Service接受标签服务,选择了以后下面的操作中会有一个让您打印标签的流程,您就可以按照FBA流程提示进行每一步标签服务的操作. Accept Stickless, Commingled Inventory意思为接收混储服务解释下混储服务概念:[同一个产品listing,您做了FBA,别人也做了FBA,那么您的FBA库存会跟别人的FBA库存存放在一块儿,客户在您这里下单后,FBA发货就从你们两个的货中间任意挑一件发给客户,挑选的这件货物有可能是你的FBA库存也可能是别

Web Service 简介

最近使用ODI的工具箱中的ODIInvokeWebService.因此简单了解下WebService的理论知识. 一.Web Service 简介 Web Service就是可编程的URL,使用标准的Internet协议(比如HTTP或 XML)远程可调用的应用程序组件. 二.为什么使用 Web Service? 本质:以标准化的方式实现企业内外各个不同服务系统之间的互调或者集成. Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换

Linux Simple Systemd Service Guide

Simple Systemd Service Guide 主题 Systemd介绍 Systemd基本操作 怎样编写_service_.service文件 怎样部署service Systemd介绍 Linux OS的系统和服务管理者 兼容SysV初始化脚本(init scripts) 提供如下功能特性: 系统启动时系统服务的并行启动 Daemon程序的按需激活 支持系统状态快照(snapshots) 基于依赖的服务控制逻辑 systemd取代RHL7的Upstart,作为默认的init系统 S

simple queue(简单队列)

1.simple queue模型 2.创建一个连接工具类 package com.dwz.rabbitmq.util; import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; public class ConnectionUtils {