class Bricolage::SQSDataSource::DeleteMessageBuffer::Entry

Attributes

id[R]
message[R]
n_failure[R]

Public Class Methods

new(msg) click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 274
def initialize(msg)
  @message = msg
  @id = SecureRandom.uuid
  @n_failure = 0
  @last_issued_time = nil
  @next_issue_time = nil
end

Public Instance Methods

failed!(issued_time = Time.now) click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 290
def failed!(issued_time = Time.now)
  @n_failure += 1
  @last_issued_time = issued_time
  @next_issue_time = @last_issued_time + next_retry_interval
end
issuable?(now) click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 286
def issuable?(now)
  @n_failure == 0 or now > @next_issue_time
end
next_retry_interval() click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 296
def next_retry_interval
  # 16s, 32s, 64s -> total 2m
  2 ** (3 + @n_failure)
end
request_params() click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 306
def request_params
  { id: @id, receipt_handle: @message.receipt_handle }
end
too_many_failure?() click to toggle source
# File lib/bricolage/sqsdatasource.rb, line 301
def too_many_failure?
  # (first request) + (3 retry requests) = (4 requests)
  @n_failure > MAX_RETRY_COUNT
end