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