ãAWSã®ãµã¼ãã¹ã¯ã©ããè¯ãèãããã¦ãã¦å¥½ãã§ããããããªä¸ã§ä½¿ãã°ä½¿ããç¨ã«è¯ãã解ã£ã¦ãããµã¼ãã¹ã¨ãã¦Amazon Simple Queue Serviceï¼SQSï¼ãããã¾ãããã®åã®éããã·ã³ãã«ãªãã¥ã¼ãµã¼ãã¹ã§ãããã®åãå¯ç¨æ§ãé«ããä¸æã使ãããªãã°æ§ã
ãªãµã¼ãã¹ã®å¯ç¨æ§ãä½ã³ã¹ãã§ä¸ãããã¨ãåºæ¥ãã¨æãã¾ãã
ãä¸ä¾ã§è¨ãã°å¾æ¥åã®ã·ã¹ãã ã§ã¯ãå¯ç¨æ§ãä¸ããèã¯ãã¼ã¿ãã¼ã¹ã«ãã£ããã¨æãã¾ããããå°ãè¨ãã¨ãåç
§ç³»ã§ã¯ãªãæ´æ°ç³»ã®é¨åããã£ã¨ã¯ã£ããè¨ãã¨ããéæãã¦OracleRAC使ãã°ä¸å®ã®å¯ç¨æ§ã¯ç¢ºä¿ã§ãããããã£ã¦ã¢ã¼ããã¯ãã£ãå¤ãã£ãã¨æãã¾ãããã®æ´æ°ç³»ã®é¨åããã¥ã¼ã使ããã¨ã«ãããã³ã¹ããä¸ãããã¨ã¨å¯ç¨æ§ãé«ãããã¨ã«å¯è½ãªã®ã§ã¯ãªãã§ããããï¼ãã¥ã¼ï¼MySQL+ã¬ããªã±ã¼ã·ã§ã³ã¿ãããªæ§é ã§ãããã¡ããæ¸ãè¾¼ã¿ã®é çªçãã¢ããªå´ã§èæ
®ããæãå¤ãç°¡åã«ã¯è¡ãã¾ããããã å®ç¾åºæ¥ãã°ãå¯ç¨æ§ã®ä»ã«ããã¼ã¯æã®å¦çã®ç·©åãªã©è²ã
ãªå¹æãããã¾ããã¨ãããã¨ã§ãã¾ãã¯åºæ¬çãªä½¿ãæ¹ãè¦ãã¦ããã¾ãã
åºæ¬çãªä½¿ãæ¹
ãAmazon SQSã¯æ¬¡ã®ãããªæµãã§å©ç¨ãã¾ãã
éä¿¡å´
ãï¼ï¼ååæå®ã§ããã¥ã¼ã®ä½æï¼CreateQueueï¼
ãï¼ï¼ã¡ãã»ã¼ã¸ï¼ãã¥ã¼ï¼éä¿¡ï¼SendMessageï¼
åä¿¡å´
ãï¼ï¼ååæå®ã§ããã¥ã¼ã®ä½æï¼CreateQueueï¼
ãï¼ï¼ã¡ãã»ã¼ã¸ã®åä¿¡ï¼ReceiveMessageï¼
ãï¼ï¼ï¼å¿ è¦ã«å¿ãã¦ï¼ã¡ãã»ã¼ã¸ã®ããã¯ï¼ChangeMessageVisibilityï¼
ãï¼ï¼ã¡ãã»ã¼ã¸å 容ã«å¿ãã¦ãç¹å®ã®å¦ç
ãï¼ï¼ã¡ãã»ã¼ã¸ã®åé¤ï¼DeleteMessageï¼
ãã¥ã¼ã®ä½æçã¯ã³ã³ã½ã¼ã«ç»é¢ããã§ãåºæ¥ãã®ã§ãã試ãã®éã¯ããã使ãã®ãè¯ãã§ãããã
æéã¨ãã³ã°ãã¼ãªã³ã°æ©è½
Amazon SQSã¯ããªã¯ã¨ã¹ãã«å¿ãã¦èª²éããã¾ãã2013å¹´2ææç¹ã§ã10,000ãªã¯ã¨ã¹ãã«ã¤ã$0.01ã§ããï¼1ãªã¯ã¨ã¹ãã«ä»ã0.000001 USDï¼ã¤ã¾ãã1ä¸åå¼ãã§1åããããå®ãï¼ï¼ã¨æãã¾ããã使ãæ¹ã«ãã£ã¦ã¯æå¤ã«ãéãæããã¾ããä¾ãã°ã1ç§éã«1åPullãªã¯ã¨ã¹ããåºãç¶ããã¨ã1ã¶æã§60*60*24*30åã§259åã«ãªãã¾ããã¾ãããã§ãå®ãã§ãããè¤æ°ã®ãµã¼ãã§å®è¡ãç¶ãã¦ããã°ããããªãã®éé¡ã«ãªãã¾ãã
ããããªæã«åºã¦ããã®ãããã³ã°ãã¼ãªã³ã°æ©è½ã§ããããã¯ã1åã®ãªã¯ã¨ã¹ãã§ã¡ãã»ã¼ã¸ãå©ç¨ã«ãªãã¾ã§1ã20ç§å¾ æ©ããæ©è½ã§ãããªã¯ã¨ã¹ãå´ã®CPUã«ããã財å¸ã«ãåªããæ©è½ã§ããã
ãã³ã°ãã¼ãªã³ã°æ©è½ã¯ãReceive Message Wait timeã®è¨å®ã§ãæ大ã§20ç§ã¾ã§æå®ã§ãã¾ããåè¿°ã®ä¾ã§20ç§ã§ã»ããããã¨ã60*60*24*30/20ã§13åãããã«ãªãã¾ãããã¯ãã1/20ã®ã³ã¹ãã«ããã§ããç´ æ´ãããï¼ï¼
rubyã®ãµã³ãã«ã³ã¼ã
ãSQSã®åãã確èªããçºã®ããµã³ãã«ã³ã¼ãã§ãã使ç¨ã®éã¯ãã³ã³ã½ã¼ã«ç»é¢ã§QueueTestã¨ãããã¥ã¼ãä½ã£ã¦ãã ããããã®å¾ããµã³ãã«ããã°ã©ã ãå®è¡ãã¦ãã³ã³ã½ã¼ã«ã®Queue ActionsããSend a Messageã§ã¡ãã»ã¼ã¸ãéãã°ãå³åº§ã«ã¡ãã»ã¼ã¸ãåºã¦ããã¨æãã¾ããã¾ããReceive Message Wait timeã®è¨å®æéã ãå¾ æ©ãã¦ããæ§ã確èªåºæ¥ãã¨æãã¾ãã
require 'rubygems'
require 'aws-sdk'
AWS.config(:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:sss_endpoint => 'sqs.ap-northeast-1.amazonaws.com')
url = 'https://sqs.ap-northeast-1.amazonaws.com/xxxxxxxxxx/QueueTest'
sqs = AWS::SQS.new
while true
receive = sqs.queues[url].receive_message()
if receive
message = receive.body
puts message
receive.delete
sleep 1
end
puts "Waiting"
sleep 1
end
ã¾ã¨ã
ãä»åã¯ç°¡åãªèª¬æã¨ä½¿ãæ¹ã§ããããSQSã¯ä½¿ãããªããã°æ§ã ãªå ´é¢ã§æ´»èºããã¨æãã¾ããSQSã使ã£ããã¶ã¤ã³ãã¿ã¼ã³ãããã£ã¨åºã¦ããã¨æãã¾ãã®ã§ãè²ã ã¨ä½¿ãæ¹ãèãã¦ãããã¨æãã¾ãã
See Also:
マイナー三兄弟なAmazon SNS,SQS,SESを激しくお勧めする。
Amazon Simple Email Service(SES)のSMTP機能を使ってみる。メールクライアント編
Amazon Simple Email Service(SES)のSMTP機能を使ってみる。サーバサイド編
Amazon Simple Email Service(SES)のメール送信テスト用機能(Amazon SES Mailbox Simulator)を試してみた
åç
§ï¼
【AWS発表】Amazon SQSに新機能が追加! ロングポーリング、リクエストバッチ処理/クライアントサイドでのバッファリング - Amazon Web Services ブログ
Rubyを使ってAmazon SNSとSQSを操作する:fanoutパターン | クラスメソッド開発ブログ