class DispatchRider::QueueServices::AwsSqs::SqsReceivedMessage

Attributes

start_time[R]
total_timeout[R]

Public Class Methods

new(message, raw_item, queue) click to toggle source
Calls superclass method
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 7
def initialize(message, raw_item, queue)
  @queue = queue
  @total_timeout = queue.visibility_timeout
  @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 16
def extend_timeout(timeout)
  item.visibility_timeout = timeout
  if timeout > 0
    @total_timeout = timeout + (Time.now - start_time).to_i
  end
end
queue_name() click to toggle source
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 40
def queue_name
  @queue.arn.split(':').last
end
receive_count() click to toggle source
# File lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb, line 32
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 28
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 36
def sent_at
  @item.sent_timestamp
end