版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/hongchangfirst/article/details/25877059

SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它非常easy,消息队列服务能够用来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 系统中的某台server在运行删除时不可用。DeleteMessage 操作未能删除消息的全部副本。该消息副本可能会被再次递送。所以应该在应用中进行对应的设计,以便在再次收到已删除的消息时不会出现错误或不一致。 

 假设连续 30 天以上时间没有针对某个队列签发下面不论什么请求,SQS有可能删除该队列:SendMessage、ReceiveMessage、DeleteMessage、GetQueueAttributes 和 SetQueueAttributes。设计应用程序时应将此考虑在内,这点比較恶心,认为不应该有这种性质。

短轮询和长轮询(差别是是否採样)

假设使用短轮询,则您从队列中检索消息时。Amazon SQS 会对server的一个子集(基于加权随机分布)进行採样,而且仅从这些server返回消息。

这意味着。特定接收请求可能不会返回您的全部消息。或者,假设您的队列中有少量消息(少于 1 000 条),则意味着,特定请求可能不会返回您的不论什么消息,而兴许请求则会返回您的不论什么消息。假设您继续从您的队列中检索消息。则 Amazon SQS 会对全部server进行採样,您会收到您的全部消息。

使用 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) 简单介绍的更多相关文章

  1. S3 服务(Simple Storage Service简单存储服务) 简介(与hdfs同一级)

    图1  spark 相关 亚马逊云存储之S3(Simple Storage Service简单存储服务) (转 ) S3是Simple Storage Service的缩写,即简单存储服务.亚马逊的名 ...

  2. HTTPSQS(HTTP Simple Queue Service)消息队列

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  3. 使用Amazon Simple Queue Service(SQS) 实现简单的消息服务

    一  引言 亚马逊Amazon作为云计算的领跑者推出了很多云服务,最近因为项目的原因,需要用到SQS服务,因此简要地写下这篇随笔,一来方便以后查阅,二来方便共享一些简单的操作. SQS即可以理解为一个 ...

  4. Amazon SNS (Simple Notification Service) Using C# and Visual Studio

    SNS (Amazon Simple Notification Services) Amazon SNS (Amazon Simple Notification Services) is a noti ...

  5. 安卓之service简单介绍

    一 什么是Service 二 如何使用Service 三 Service的生命周期   一 什么是Service Service,看名字就知道跟正常理解的“服务”差不多,后台运行,可交互这样的一个东西 ...

  6. Amazon SQS简单介绍 上篇

    SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它很easy,消息队列服务能够用来buffer burst, 使整个服务异步处理,不要求组件始终可用. 开发者最初使 ...

  7. [AWS vs Azure] 云计算里AWS和Azure的探究(6) - Amazon Simple Storage Service 和 Microsoft Azure Blob Storage

    这几天Nasuni公司出了一份报告,分析了各个云厂商的云存储的性能,包括Amazon S3,Azure Blob Storage, Google Drive, HP以及Rackspace.其中性能上A ...

  8. Android Service使用简单介绍

    作为一个android初学者,经常对service的使用感到困惑.今天结合Google API 对Service这四大组件之一,进行简单使用说明. 希望对和我一样的初学者有帮助,如有不对的地方,也希望 ...

  9. AWS系列-Amazon Simple Notification Service (SNS)

    SNS是一项 Web 服务,用于协调和管理向订阅终端节点或客户交付或发送消息的过程.在 Amazon SNS 中有两种类型的客户端:发布者和订阅者,也称为生产者和消费者.发布者通过创建消息并将消息发送 ...

随机推荐

  1. [AWS] User management

    IAM用户管理 Ref: AWS系列-创建 IAM 用户 Ref: AWS系列:深入了解IAM和访问控制 是什么? IAM enables you to control who can do what ...

  2. [原]openstack-kilo--issue(十二)openstack-keystone和httpd服务同时占用35357和5000

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. == Keystone service == openstack-keyston ...

  3. rabbitmq 强制删除集群相关信息,恢复原始状态

    一.前言 同事搭的rabbitmq集群,其中一台一直报下面这种异常:  Error: {inconsistent_cluster,"Node rabbit@mq1 thinks it's c ...

  4. python分支语句

    一.if else语句 if 条件表达式: else: a = 3 b = 4 if a >= b: print("a >= b") else: print(" ...

  5. 利用profiler工具提高NC-Verilog仿真效率

    大家进行芯片验证时,一般都会遇到仿真速度很慢.效率不高的问题.目前发现了一个方法可以debug上述问题.即,利用NC的profiler工具. 关于profiler工具,我把文档<Cadence® ...

  6. python使用selenium安装chromedriver的问题

    环境 win64位,python3.6, 问题与解决 说来也巧,今天无意中解决了两个多月前的问题,即用selenium调用chrome浏览器报错的问题:起因是在知乎中看到了一篇12306抢票的文章,用 ...

  7. ThinkPHP框架 系统规定的方法查询数据库内容!!同时也支持原生的SQL语句!

    <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller{ ...

  8. Oracle客户端的安装与远程连接配置

    在继续Oracle客户端的安装之前,需要分析一下Oracle客户端与数据库服务器之间的连接机制. 一.Oracle客户端与服务器端的通讯机制 1.Oracle Net协议 如下图所示,Oracle通过 ...

  9. Excel相关操作

    public static bool DataSetToExcel(DataSet dataSet, string filePath, bool isShowExcle = true) { DataT ...

  10. GIAC2018全球互联网架构大会深圳站盛况回顾,定格精彩瞬间!

    6月1日至2日,由知名软件培训公司msup和高可用架构联合推出的GIAC全球互联网架构大会在深圳华侨城洲际大酒店盛大召开.来自国内外顶级互联网公司.诸多著名科技图书作者在内的71名海内外著名专家与现场 ...