# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 # Purpose # This code example demonstrates how to: # 1. Get a list of your queues. # 2. Create a queue. # 3. Get the queue's URL. # 4. Delete the queue. # snippet-start:[ruby.example_code.sqs.ScenarioGettingStarted] require 'aws-sdk-sqs' # v2: require 'aws-sdk' # Replace us-west-2 with the AWS Region you're using for Amazon SQS. sqs = Aws::SQS::Client.new(region: 'us-west-2') # Get a list of your queues. sqs.list_queues.queue_urls.each do |queue_url| puts queue_url end # Create a queue. queue_name = 'my-queue' begin sqs.create_queue({ queue_name: queue_name, attributes: { 'DelaySeconds' => '60', # Delay message delivery for 1 minute (60 seconds). 'MessageRetentionPeriod' => '86400' # Delete message after 1 day (24 hours * 60 minutes * 60 seconds). } }) rescue Aws::SQS::Errors::QueueDeletedRecently puts "A queue with the name '#{queue_name}' was recently deleted. Wait at least 60 seconds and try again." exit(false) end # Get the queue's URL. queue_url = sqs.get_queue_url(queue_name: queue_name).queue_url puts queue_url begin # Create a message with three custom attributes: Title, Author, and WeeksOn. send_message_result = sqs.send_message({ queue_url: queue_url, message_body: 'Information about current NY Times fiction bestseller for week of 2016-12-11.', message_attributes: { 'Title' => { string_value: 'The Whistler', data_type: 'String' }, 'Author' => { string_value: 'John Grisham', data_type: 'String' }, 'WeeksOn' => { string_value: '6', data_type: 'Number' } } }) puts send_message_result.message_id rescue Aws::SQS::Errors::NonExistentQueue puts "A queue named '#{queue_name}' does not exist." exit(false) end # Receive the message in the queue. receive_message_result = sqs.receive_message({ queue_url: queue_url, message_attribute_names: ['All'], # Receive all custom attributes. max_number_of_messages: 1, # Receive at most one message. wait_time_seconds: 0 # Do not wait to check for the message. }) # Display information about the message. # Display the message's body and each custom attribute value. receive_message_result.messages.each do |message| puts message.body puts "Title: #{message.message_attributes['Title']['string_value']}" puts "Author: #{message.message_attributes['Author']['string_value']}" puts "WeeksOn: #{message.message_attributes['WeeksOn']['string_value']}" # Delete the message from the queue. sqs.delete_message({ queue_url: queue_url, receipt_handle: message.receipt_handle }) end # Delete the queue. sqs.delete_queue(queue_url: queue_url) # snippet-end:[ruby.example_code.sqs.ScenarioGettingStarted]