zoukankan      html  css  js  c++  java
  • AWS SQS DOC AND RUBY DEMO


    # Amazon SQS

    搜集整理aws sqs 的文档以及使用Ruby demo

    ## Amazon Simple Queue Service (SQS) 

    是一个可伸缩且可靠的消息传递框架,能够使用它简便地创建、存储和获取文本消息。能够使用它构建基于 Amazon Web Services 的应用程序。使用 SQS 是构建松散耦合的 Web 应用程序的好方法。仅仅需依据使用量为消息付费。

    整个队列框架在 Amazon 数据中心的安全环境中执行。




    ## SQS 提供下面特性:

    * 可靠性
    SQS 可以跨多个数据中心冗余地存储消息,保证它们随时可用。
    * 简单性
    訪问和使用 SQS 的编程模型很easy,并且能够通过多种编程语言使用 SQS。
    * 安全性
    SQS 提供非常高的安全水平。仅仅同意授权的用户訪问消息。


    * 可伸缩性
    能够用 SQS 创建基于队列的应用程序。这些程序能够读写数量不限的消息。
    * 低成本
    SQS 以很低廉的费率满足您的消息传递需求。


    ## 消息

    消息 包括不超过 8 KB 的文本数据。每一个消息一直存储到被应用程序接收为止。当接收消息的应用程序从队列中读取一个消息时,指定可见性超时值(以秒为单位)。它的作用就像是锁:


    * 确保在指定的时间段内队列的其它消费者看不到已被接收的消息。


    * 仅仅有当超时周期过期时,并且读取消息的应用程序没有删除它,消息才会又一次出如今队列中。


    * 消息在队列中保留四天。


     
    * SQS 会自己主动删除在队列中超过四天的消息。

    SQS 採用 “终于一致性(eventual consistency)” 模型。这意味着您可以向队列发送消息,可是队列的消费者不一定可以在特定的时间段内看到它。消息终于会投递,可是一定要考虑您的应用程序是否在意消息的次序。




    * 表 1. 消息的组成部分
    部分  说明
    MessageId 引用此消息的惟一 ID。


    ReceiptHandle 在从队列获取消息时返回的惟一句柄。每次从队列获取消息时返回的句柄都不一样。在删除消息时须要使用它。
    MD5OfBody 非 URL 编码的消息体字符串的 MD5 摘要。
    Body  实际的消息数据。




    * 队列
    队列 是消息的容器。每一个消息必须指定将容纳它的队列。发送给队列的消息保留在队列中。直到显式地删除它们。队列採用 “先进先出” 次序,可是并不保证次序。每一个队列的默认可见性超时值是 30 秒。能够为整个队列改动这个值,也能够在获取消息时单独为每一个消息设置。

    队列或消息可见性超时值的最大值是两小时(7,200 秒)。假设队列中连续 30 天没有活动,SQS 保留自己主动删除它们的权力。




    ## 设计考虑因素

    SQS 与常见的队列框架有点儿不一样。在设计基于 SQS 的应用程序之前,您必须考虑三个问题:


    * SQS 不保证队列中消息的次序。
    消息在队列中的次序是宽松的;它们实际上并不依照在队列中加入消息的次序存储。SQS 会尝试保持消息的次序,可是不保证接收消息的次序与发送它们的次序全然同样。假设消息的次序对于您的应用程序非常重要,就须要在每一个消息中加入序列数据。
    * SQS 不保证删除队列中的消息。


    在设计应用程序时,必须保证多次处理同一消息不会对程序产生影响。SQS 把每一个消息存储在多台server上。从而提供冗余和高可用性。假设在删除一个消息时当中一个server不可用,那么在以后接收消息时有可能再次获取此消息的拷贝(虽然这样的情况非常少出现)。


    * SQS 不保证在查询时返回队列中的全部消息。
    SQS 使用基于加权随机分布的消息取样,在查询消息时。它仅仅从取样的一部分server返回消息。虽然一次查询请求可能不会返回队列中的全部消息,可是假设一直从队列中获取消息,终于会取样全部server。您就会得到全部消息。




    ## API 版本号

    尽快開始迁移使用老 API 版本号的应用程序。
    为了尽可能降低麻烦。在用 SQS 创建新应用程序时,应该使用 API 的最新版本号。






    ## Amazon Web Services 和 SQS 入门

    要想開始使用 SQS,首先须要注冊一个 Amazon Web Services 账户(见 參考资料)。

    本系列的 第 2 部分 具体介绍了怎样注冊 Amazon Web Services 账户。




    创建账户之后,必须为账户启用 Amazon SQS 服务:


    * 注冊 Amazon Web Services 账户。
    * 导航到 SQS 主页。
    * 单击页面右边的 Sign Up For Amazon SQS。
    * 提供必需的信息并完毕注冊过程。






    ## 与 SQS 交互  AWS SQS RUBY Example

    (http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SQS.html#queues-instance_method)


    * Ruby AWS-SDK GEM
    https://github.com/aws/aws-sdk-ruby


    * 设置一些环境变量,引用 Amazon Web Services 訪问键。
    能够从 Web Services Account information 页面获得訪问键。(http://aws-portal.amazon.com/gp/aws/developer/account/index.html?

    ie=UTF8&action=account-links)


    config.yml

    access_key_id: xxx
    secret_access_key: yyy
    




    * 获取消息


    sqs_poll.rb
    #!/usr/bin/env ruby
     
    require 'yaml'
    require 'aws-sdk'
     
    config_file = File.join(File.dirname(__FILE__),"config.yml")
    config = YAML.load(File.read(config_file))
    AWS.config(config)
     
    sqs = AWS::SQS.new
    queue = sqs.queues.create("my_queue")
    queue.poll do |msg|
      puts msg.body
    end
    



    * 发送消息


    sqs_send.rb

    #!/usr/bin/env ruby
     
    require 'yaml'
    require 'aws-sdk'
     
    config_file = File.join(File.dirname(__FILE__),"config.yml")
    config = YAML.load(File.read(config_file))
    AWS.config(config)
     
    # http://rubydoc.info/github/amazonwebservices/aws-sdk-for-ruby/master/AWS/SQS
     
    sqs = AWS::SQS.new
    queue = sqs.queues.create("my_queue")
     
    # http://rubydoc.info/github/amazonwebservices/aws-sdk-for-ruby/master/AWS/SQS/Queue
     
    send = lambda { |name, queue|
      while true do
        queue.send_message("#{name}:#{Time.now.to_s}")
        sleep 1
      end
    }
     
    Thread.new { send.call("t1", queue) }
    Thread.new { send.call("t2", queue) }
    Thread.new { send.call("t3", queue) }
     
    sleep 1000
    





















  • 相关阅读:
    easy ui 表单ajax和from两种提交数据方法
    easy ui 下拉级联效果 ,下拉框绑定数据select控件
    easy ui 下拉框绑定数据select控件
    easy ui 异步上传文件,跨域
    easy ui 菜单和按钮(Menu and Button)
    HTTP 错误 404.3
    EXTJS4.2 后台管理菜单栏
    HTML 背景图片自适应
    easy ui 表单元素input控件后面加说明(红色)
    EXTJS 4.2 添加滚动条
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5330510.html
Copyright © 2011-2022 走看看