Class: Shoryuken::Queue
Overview
Represents an SQS queue and provides methods for sending and receiving messages. Handles both standard and FIFO queues, automatically adding required FIFO attributes.
Constant Summary collapse
- FIFO_ATTR =
SQS attribute name for FIFO queue identification
'FifoQueue'- MESSAGE_GROUP_ID =
Default message group ID used for FIFO queues
'ShoryukenMessage'- VISIBILITY_TIMEOUT_ATTR =
SQS attribute name for visibility timeout
'VisibilityTimeout'
Instance Attribute Summary collapse
-
#client ⇒ Aws::SQS::Client
The SQS client.
-
#name ⇒ String
The queue name.
-
#url ⇒ String
The queue URL.
Instance Method Summary collapse
-
#delete_messages(options) ⇒ Boolean
Deletes messages from the queue in batch.
-
#fifo? ⇒ Boolean
Checks if the queue is a FIFO queue.
-
#initialize(client, name_or_url_or_arn) ⇒ Queue
constructor
Initializes a new Queue instance.
-
#receive_messages(options) ⇒ Array<Shoryuken::Message>
Receives messages from the queue.
-
#send_message(options) ⇒ Aws::SQS::Types::SendMessageResult
Sends a single message to the queue.
-
#send_messages(options) ⇒ Aws::SQS::Types::SendMessageBatchResult
Sends multiple messages to the queue in batch.
-
#visibility_timeout ⇒ Integer
Returns the visibility timeout for the queue.
Methods included from Util
#elapsed, #fire_event, #logger, #unparse_queues, #worker_name
Constructor Details
#initialize(client, name_or_url_or_arn) ⇒ Queue
Initializes a new Queue instance
31 32 33 34 |
# File 'lib/shoryuken/queue.rb', line 31 def initialize(client, name_or_url_or_arn) self.client = client set_name_and_url(name_or_url_or_arn) end |
Instance Attribute Details
#client ⇒ Aws::SQS::Client
Returns the SQS client.
22 23 24 |
# File 'lib/shoryuken/queue.rb', line 22 def client @client end |
#name ⇒ String
Returns the queue name.
19 20 21 |
# File 'lib/shoryuken/queue.rb', line 19 def name @name end |
#url ⇒ String
Returns the queue URL.
25 26 27 |
# File 'lib/shoryuken/queue.rb', line 25 def url @url end |
Instance Method Details
#delete_messages(options) ⇒ Boolean
Deletes messages from the queue in batch
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/shoryuken/queue.rb', line 51 def () = client.( .merge(queue_url: url) ).failed || [] .any? do |failure| logger.error do "Could not delete #{failure.id}, code: '#{failure.code}', message: '#{failure.}', sender_fault: #{failure.sender_fault}" end end end |
#fifo? ⇒ Boolean
Checks if the queue is a FIFO queue
105 106 107 108 109 110 111 112 |
# File 'lib/shoryuken/queue.rb', line 105 def fifo? # Make sure the memoization work with boolean to avoid multiple calls to SQS # see https://github.com/ruby-shoryuken/shoryuken/pull/529 return @_fifo if defined?(@_fifo) @_fifo = queue_attributes.attributes[FIFO_ATTR] == 'true' @_fifo end |
#receive_messages(options) ⇒ Array<Shoryuken::Message>
Receives messages from the queue
97 98 99 100 |
# File 'lib/shoryuken/queue.rb', line 97 def () = client.(.merge(queue_url: url)). || [] .map { |m| Message.new(client, self, m) } end |
#send_message(options) ⇒ Aws::SQS::Types::SendMessageResult
Sends a single message to the queue
71 72 73 74 75 76 77 |
# File 'lib/shoryuken/queue.rb', line 71 def () = ().merge(queue_url: url) Shoryuken.client_middleware.invoke() do client.() end end |
#send_messages(options) ⇒ Aws::SQS::Types::SendMessageBatchResult
Sends multiple messages to the queue in batch
84 85 86 |
# File 'lib/shoryuken/queue.rb', line 84 def () client.(().merge(queue_url: url)) end |
#visibility_timeout ⇒ Integer
Returns the visibility timeout for the queue
39 40 41 42 43 44 |
# File 'lib/shoryuken/queue.rb', line 39 def visibility_timeout # Always lookup for the latest visibility when cache is disabled # setting it to nil, forces re-lookup @_visibility_timeout = nil unless Shoryuken.cache_visibility_timeout? @_visibility_timeout ||= queue_attributes.attributes[VISIBILITY_TIMEOUT_ATTR].to_i end |