Class: DispatchRider::QueueServices::AwsSqs::SqsReceivedMessage

Inherits:
ReceivedMessage
  • Object
show all
Defined in:
lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb

Instance Attribute Summary collapse

Attributes inherited from ReceivedMessage

#item

Instance Method Summary collapse

Methods inherited from ReceivedMessage

#guid

Constructor Details

#initialize(message, raw_item, queue, queue_visibility_timeout) ⇒ SqsReceivedMessage

Returns a new instance of SqsReceivedMessage.



9
10
11
12
13
14
# 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

Instance Attribute Details

#start_timeObject (readonly)

Returns the value of attribute start_time.



7
8
9
# File 'lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb', line 7

def start_time
  @start_time
end

#total_timeoutObject (readonly)

Returns the value of attribute total_timeout.



7
8
9
# File 'lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb', line 7

def total_timeout
  @total_timeout
end

Instance Method Details

#extend_timeout(timeout) ⇒ Object

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



18
19
20
21
22
23
# 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_nameObject



42
43
44
# File 'lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb', line 42

def queue_name
  @item.queue_arn.split(':').last
end

#receive_countObject



34
35
36
# File 'lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb', line 34

def receive_count
  @item.approximate_receive_count
end

#return_to_queueObject

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



30
31
32
# File 'lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb', line 30

def return_to_queue
  extend_timeout(0)
end

#sent_atObject



38
39
40
# File 'lib/dispatch-rider/queue_services/aws_sqs/sqs_received_message.rb', line 38

def sent_at
  @item.sent_timestamp
end