メニュー
AWS SDK for Ruby
開発者ガイド

Amazon SQS で QueuePoller クラスを使用してメッセージを受信

次の例では、us-west-2 リージョンの URL URL を持つ SQS キューのすべてのメッセージの本文を表示する QueuePoller ユーティリティクラスを使用し、メッセージを削除します。約 15 秒間のアイドル状態の後、スクリプトはタイムアウトします。

require 'aws-sdk' Aws.config.update({region: 'us-west-2'}) poller = Aws::SQS::QueuePoller.new(URL) poller.poll(idle_timeout: 15) do |msg| puts msg.body end

次の例では、URL URL を持つ Amazon SQS キューをループし、最大時間 (秒) 待機します。

Amazon SQS でのすべてのキューに関する情報の取得」の Amazon SQS の例を実行することで、正しい URL を取得できます。

require 'aws-sdk' Aws.config.update({region: 'us-west-2'}) poller = Aws::SQS::QueuePoller.new(URL) poller.poll(wait_time_seconds: duration, idle_timeout: duration + 1) do |msg| puts msg.body end

次の例では、URL URL を持つ Amazon SQS キューをループし、可視性タイムアウトの秒数の範囲内で do_something メソッドで表されるように、メッセージを処理します。

require 'aws-sdk' # Process the message def do_something(msg) puts msg.body end Aws.config.update({region: 'us-west-2'}) poller = Aws::SQS::QueuePoller.new(URL) poller.poll(timeout_visibility: timeout, idle_timeout: timeout + 1) do |msg| do_something(msg) end

次の例では、URL URL を持つ Amazon SQS キューをループし、do_something2 メソッドにより追加の処理が必要なすべてのメッセージについて可視性タイムアウトの秒数を変更します。

require 'aws-sdk' # Process the message def do_something(msg) true end # Do additional processing def do_something2(msg) puts msg.body end Aws.config.update({region: 'us-west-2'}) poller = Aws::SQS::QueuePoller.new(URL) poller.poll(idle_timeout: timeout + 1) do |msg| if do_something(msg) # need more time for processing poller.change_message_visibility_timeout(msg, timeout) do_something2(msg) end end