Amazon云计算AWS之简单队列服务SQS消息 - 新闻中心 - 福州哈唐网络-福建IDC企业!专注云主机及服务器租用托管13年!

新闻中心

首页 > 新闻中心 > 行业新闻 >

Amazon云计算AWS之简单队列服务SQS消息

时间:2017-01-19 15:13:52   阅读:

1.消息的格式
 
  消息由以下四个部分组成。
 
  (1)消息ID (Message ID):由系统返回给用户,用来标识队列中的不同消息。
 
  (2)接收句柄(Receipt Handle):当从队列中接受消息时就会从消息那里得到一个接收句柄,这个句柄可以用来对消息进行删除等操作。
 
  (3)消息体(Body):消息的正文部分,需要注意的是消息存放的是文本数据并且不能是URL编码方式。
 
  (4)息体MD5摘要(MD5ofBody):消息体字符串的MD5校验和。
 
2.消息取样
 
  队列中的消息是被冗余存储的,同一个消息会存放在系统的多个服务器托管上。这样做的目的是为了保证系统的高可用性,但是这给用户査询队列中的消息带来了一定的麻烦。SQS使用的是基于加权随机分布(Based on a Weighted Random Distribution)的消息取样,当用户发出査询队列中消息的命令后,系统在所有的服务器上使用基于加权随机分布算法随机地选出部分服务器,然后返回这些服务器上保存的所査询的队列消息副本。虽然用户只要一直查询下去总会查询到所有的消息,但是当用户査询队列中消息数目相对较少的话,在某次査询时系统可能不会返回任何结果。图3-19是这种取样方式的示意图。
 
\
 
  可以看出,在图3-19中就出现了返回结果不准确的现象,这是因为消息数较少且服务器的选择具有随机性。
 
3.消息的可见性超时值及生命周期
 
  在SQS中,消息是否被接受是由用户自己确认的。当用户执行删除操作后,系统就会认为用户已经准确地接收到消息,将队列中的消息彻底删除。如果用户未接收到数据或接收到数据并没有执行删除操作,SQS将在队列中保留该消息。为了保证其他组件不会看见用户的消息,SQS会将该消息阻塞,也就相当于给消息加了一把锁。但是这把锁并不会一直锁住消息,因为系统保留消息的目的是为了给用户重传数据。为此SQS引入十一个可见性超时值(Visibility Timeout)。可见性表明该消息可以被所有的组件査看,可见性超时值相当于一个计时器,在设定好的时间内,发给用户的消息对于其他所有的组件是不可见的。如果在计时器到时之前用户一直未执行删除操作,则SQS会将该消息的状态 变成可见并给用户重传这个消息。可见性超时值可以由用户自行设置,用户可以根据自己 操作的需要改变这个值,经验表明太长或太短的超时值都是不合适的。除了在计时器开始计时前改变设置,在计时器计时的过程中还可以对计时器进行两种操作:扩展(Extend) 和终止(Terminate)。扩展操作就是将计时器按照新设定的值重新计时,终止就是将当前的计时过程终止,直接将消息由不可见变为可见。这两个操作的设置都只是临时性设置,不会被系统保存。消息从产生并发送至队列一直到其从队列中被删除的全过程称为消息的生命周期(Life Cycle)。如果消息在队列中存放的时间超过4天,SQS也会自动将其删除。图3-20是消息的可见性超时值和生命周期的示意图。
 
\


闽公网安备 35010002000114号