Class: Bricolage::SQSDataSource::DeleteMessageBuffer::Entry

Inherits:
Object
  • Object
show all
Defined in:
lib/bricolage/sqsdatasource.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(msg) ⇒ Entry

Returns a new instance of Entry.



274
275
276
277
278
279
280
# 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

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



282
283
284
# File 'lib/bricolage/sqsdatasource.rb', line 282

def id
  @id
end

#messageObject (readonly)

Returns the value of attribute message.



283
284
285
# File 'lib/bricolage/sqsdatasource.rb', line 283

def message
  @message
end

#n_failureObject (readonly)

Returns the value of attribute n_failure.



284
285
286
# File 'lib/bricolage/sqsdatasource.rb', line 284

def n_failure
  @n_failure
end

Instance Method Details

#failed!(issued_time = Time.now) ⇒ Object



290
291
292
293
294
# 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) ⇒ Boolean

Returns:

  • (Boolean)


286
287
288
# File 'lib/bricolage/sqsdatasource.rb', line 286

def issuable?(now)
  @n_failure == 0 or now > @next_issue_time
end

#next_retry_intervalObject



296
297
298
299
# File 'lib/bricolage/sqsdatasource.rb', line 296

def next_retry_interval
  # 16s, 32s, 64s -> total 2m
  2 ** (3 + @n_failure)
end

#request_paramsObject



306
307
308
# File 'lib/bricolage/sqsdatasource.rb', line 306

def request_params
  { id: @id, receipt_handle: @message.receipt_handle }
end

#too_many_failure?Boolean

Returns:

  • (Boolean)


301
302
303
304
# File 'lib/bricolage/sqsdatasource.rb', line 301

def too_many_failure?
  # (first request) + (3 retry requests) = (4 requests)
  @n_failure > MAX_RETRY_COUNT
end