class DispatchRider::QueueServices::AwsSqs::SqsReceivedMessage

Attributes

start_time[R]
total_timeout[R]

Public Class Methods

new(message, raw_item, queue, queue_visibility_timeout) click to toggle source
Calls superclass method
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 9
def initialize(message, raw_item, queue, queue_visibility_timeout)
  @queue = queue
  @total_timeout = queue_visibility_timeout.to_i
  @start_time = Time.now
  super(message, raw_item)
end

Public Instance Methods

extend_timeout(timeout) click to toggle source

NOTE: Setting the visibility timeout resets the timeout to NOW and makes it visibility timeout this time Essentially resetting the timer on this message

# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 18
def extend_timeout(timeout)
  item.change_visibility({
    visibility_timeout: timeout # required
  })
  @total_timeout = timeout + (Time.now - start_time).to_i if timeout > 0
end
queue_name() click to toggle source
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 42
def queue_name
  @item.queue_arn.split(':').last
end
receive_count() click to toggle source
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 34
def receive_count
  @item.approximate_receive_count
end
return_to_queue() click to toggle source

We effectively return the item to the queue by setting the visibility timeout to zero. The item should become immediately visible. The next receiver will reset the visibility to something appropriate

# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 30
def return_to_queue
  extend_timeout(0)
end
sent_at() click to toggle source
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 38
def sent_at
  @item.sent_timestamp
end