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