在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
# Amazon SQS搜集整理aws sqs 的文档以及使用Ruby demo## Amazon Simple Queue Service (SQS)是一个可伸缩且可靠的消息传递框架,能够使用它简便地创建、存储和获取文本消息。能够使用它构建基于 Amazon Web Services 的应用程序。使用 SQS 是构建松散耦合的 Web 应用程序的好方法。仅仅需依据使用量为消息付费。整个队列框架在 Amazon 数据中心的安全环境中执行。 ## SQS 提供下面特性:* 可靠性SQS 可以跨多个数据中心冗余地存储消息,保证它们随时可用。 * 简单性 訪问和使用 SQS 的编程模型很easy,并且能够通过多种编程语言使用 SQS。 * 安全性 SQS 提供非常高的安全水平。仅仅同意授权的用户訪问消息。
## 消息消息 包括不超过 8 KB 的文本数据。每一个消息一直存储到被应用程序接收为止。当接收消息的应用程序从队列中读取一个消息时,指定可见性超时值(以秒为单位)。它的作用就像是锁:* 确保在指定的时间段内队列的其它消费者看不到已被接收的消息。
SQS 採用 “终于一致性(eventual consistency)” 模型。这意味着您可以向队列发送消息,可是队列的消费者不一定可以在特定的时间段内看到它。消息终于会投递,可是一定要考虑您的应用程序是否在意消息的次序。
队列或消息可见性超时值的最大值是两小时(7,200 秒)。假设队列中连续 30 天没有活动,SQS 保留自己主动删除它们的权力。 ## 设计考虑因素SQS 与常见的队列框架有点儿不一样。在设计基于 SQS 的应用程序之前,您必须考虑三个问题:* SQS 不保证队列中消息的次序。 消息在队列中的次序是宽松的;它们实际上并不依照在队列中加入消息的次序存储。SQS 会尝试保持消息的次序,可是不保证接收消息的次序与发送它们的次序全然同样。假设消息的次序对于您的应用程序非常重要,就须要在每一个消息中加入序列数据。 * SQS 不保证删除队列中的消息。
## API 版本号尽快開始迁移使用老 API 版本号的应用程序。为了尽可能降低麻烦。在用 SQS 创建新应用程序时,应该使用 API 的最新版本号。 ## Amazon Web Services 和 SQS 入门要想開始使用 SQS,首先须要注冊一个 Amazon Web Services 账户(见 參考资料)。本系列的 第 2 部分 具体介绍了怎样注冊 Amazon Web Services 账户。
## 与 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) 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 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论