Class: Bricolage::SQSDataSource::DeleteMessageBuffer::Entry
- Inherits:
-
Object
- Object
- Bricolage::SQSDataSource::DeleteMessageBuffer::Entry
- Defined in:
- lib/bricolage/sqsdatasource.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#message ⇒ Object
readonly
Returns the value of attribute message.
-
#n_failure ⇒ Object
readonly
Returns the value of attribute n_failure.
Instance Method Summary collapse
- #failed!(issued_time = Time.now) ⇒ Object
-
#initialize(msg) ⇒ Entry
constructor
A new instance of Entry.
- #issuable?(now) ⇒ Boolean
- #next_retry_interval ⇒ Object
- #request_params ⇒ Object
- #too_many_failure? ⇒ Boolean
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
#id ⇒ Object (readonly)
Returns the value of attribute id.
282 283 284 |
# File 'lib/bricolage/sqsdatasource.rb', line 282 def id @id end |
#message ⇒ Object (readonly)
Returns the value of attribute message.
283 284 285 |
# File 'lib/bricolage/sqsdatasource.rb', line 283 def @message end |
#n_failure ⇒ Object (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
286 287 288 |
# File 'lib/bricolage/sqsdatasource.rb', line 286 def issuable?(now) @n_failure == 0 or now > @next_issue_time end |
#next_retry_interval ⇒ Object
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_params ⇒ Object
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
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 |