Class: Smash::CloudPowers::Synapse::Queue::Board
- Includes:
- AwsResources, Helpers, Smash::CloudPowers::Synapse::Queue, Zenv
- Defined in:
- lib/cloud_powers/synapse/queue/board.rb
Overview
The Queue::Resource class helps wrap up information and functionality of a Queue on SQS. It is basically just an abstraction to make using SQS simpler
Instance Attribute Summary collapse
-
#address ⇒ Object
Gives the Queue address (URL).
-
#response ⇒ Object
readonly
Hashresponse from Aws SDKAws::SQS::Client#create_resource(). -
#sqs ⇒ Object
An Aws::SQS::Client.
Attributes inherited from Resource
#call_name, #client, #linked, #name, #remote_id, #tags, #type
Instance Method Summary collapse
-
#create_resource ⇒ Object
Creates an actual Queue in SQS using the standard format for this queue name (camel case).
-
#destroy! ⇒ Object
Deletes an actual Queue from SQS.
-
#exists? ⇒ Boolean
Predicate method to query SQS for the queue.
-
#i_var ⇒ Object
Gives back a string representation of the instance variable for this resource.
-
#initialize(name:, client: sqs, **config) ⇒ Board
constructor
Creates a Resource object.
- #link ⇒ Object
-
#message_count ⇒ Object
Gets the approximate message count for a Queue using the ‘ApproximateMessageCount’ attribute.
-
#pluck_message ⇒ Object
Retrieves a message from the Queue and deletes it from the Queue in SQS.
-
#poller ⇒ Object
Gets a QueuePoller for the Queue attached to this Resource instance.
-
#send_message(message) ⇒ Object
Sends the given message to the queue.
Methods included from Zenv
#env_vars, #file_tree_search, #i_vars, #project_root, #project_root=, #system_vars, #zfind
Methods included from Helpers
#create_logger, #log_file, #logger
Methods included from PathHelp
#job_exist?, #job_home, #job_path, #job_require_path
Methods included from LogicHelp
#attr_map, #called_from, #instance_attr_accessor, #smart_retry, #update_message_body
Methods included from LangHelp
#deep_modify_keys_with, #find_and_remove, #format_error_message, #from_json, #modify_keys_with, #to_basic_hash, #to_camel, #to_hyph, #to_i_var, #to_pascal, #to_ruby_file_name, #to_snake, #valid_json?, #valid_url?
Methods included from Smash::CloudPowers::Synapse::Queue
#best_guess_address, #board_name, #build_board, #build_queue, #create_board, #create_queue, #delete_queue_message, #get_queue_message_count, #get_queue_poller, #pluck_queue_message, #poll, #queue_exists?, #queue_name, #queue_poller_name, #queue_search, #send_queue_message
Methods included from AwsResources
#ec2, #image, #kinesis, #queue_poller, #region, #s3, #sns
Methods included from Auth
Methods included from Creatable
Constructor Details
#initialize(name:, client: sqs, **config) ⇒ Board
Creates a Resource object. The #new() method is wrapped in #build() and #create!() but isn’t private so #new() can be used instead of build. The Resource doesn’t create Queue(s) or any other API calls until it is instructed to.
Parameters
-
name
String- the name of the resource can be used to find its arn/url etc
Returns Queue::Resource
36 37 38 39 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 36 def initialize(name:, client: sqs, **config) super @sqs = client end |
Instance Attribute Details
#address ⇒ Object
Gives the Queue address (URL). First the environment is searched, using Zenv and if nothing is found, the best guess attempt at the correct address is used.
Returns
* queue address <String>
20 21 22 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 20 def address @address end |
#response ⇒ Object (readonly)
Hash response from Aws SDK Aws::SQS::Client#create_resource()
22 23 24 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 22 def response @response end |
#sqs ⇒ Object
An Aws::SQS::Client. See <tt>Smash::CloudPowers::AwsResources#sqs()<tt>
24 25 26 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 24 def sqs @sqs end |
Instance Method Details
#create_resource ⇒ Object
Creates an actual Queue in SQS using the standard format for this queue name (camel case)
Returns Queue::Resource
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 54 def create_resource begin @response = sqs.create_queue(queue_name: to_camel(@name)) yield self if block_given? self rescue Aws::SQS::Errors::QueueDeletedRecently sleep 5 retry end end |
#destroy! ⇒ Object
Deletes an actual Queue from SQS
66 67 68 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 66 def destroy! sqs.delete_queue(queue_url: address) end |
#exists? ⇒ Boolean
Predicate method to query SQS for the queue
Example
queue = Queue::Resource.build('example')
queue.exists?
# => false
queue.save!
queue.exists?
# => true
91 92 93 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 91 def exists? queue_exists?(@name) end |
#i_var ⇒ Object
78 79 80 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 78 def i_var to_i_var(@name) end |
#link ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 95 def link if exists? urls = queue_search(call_name) if urls.size > 1 logger.info sitrep(content: "multiple matching #{name} queues to link to") return @linked = false end # @url = urls.first @url = sqs.get_queue_url(queue_name: @name).queue_url else save! end @linked = @url.eql? urls.first end |
#message_count ⇒ Object
Gets the approximate message count for a Queue using the ‘ApproximateMessageCount’ attribute
Returns Integer
116 117 118 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 116 def (address) end |
#pluck_message ⇒ Object
Retrieves a message from the Queue and deletes it from the Queue in SQS
133 134 135 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 133 def (name) end |
#poller ⇒ Object
Gets a QueuePoller for the Queue attached to this Resource instance.
Returns Aws::SQS::QueuePoller
Notes
-
Provide an existing SQS Client if one exists. This is used to sort out development
production work.
128 129 130 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 128 def poller @poller ||= Aws::SQS::QueuePoller.new(queue_url: address, client: sqs) end |
#send_message(message) ⇒ Object
Sends the given message to the queue
Parameters
-
message - used as JSON or converted into it
141 142 143 144 145 |
# File 'lib/cloud_powers/synapse/queue/board.rb', line 141 def () ( address, (valid_json?() ? : .to_json), sqs ) end |