Class: CommandTower::Messaging::DeliveryRetryPolicy

Inherits:
Object
  • Object
show all
Defined in:
app/services/command_tower/messaging/delivery_retry_policy.rb

Overview

Authoritative Messaging retry business rules. Consumed by Execution::Recovery (implementation) and Contract mappers (visibility).

Constant Summary collapse

MAX_ATTEMPTS =
5
GRACE_WINDOW =
1.minute

Class Method Summary collapse

Class Method Details

.retries_exhausted?(delivery) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
# File 'app/services/command_tower/messaging/delivery_retry_policy.rb', line 12

def retries_exhausted?(delivery)
  delivery.status == ChannelDelivery::STATUS_FAILED_RETRYABLE &&
    delivery.execution_attempt_count >= MAX_ATTEMPTS
end

.retry_eligible_at(delivery) ⇒ Object



22
23
24
25
26
# File 'app/services/command_tower/messaging/delivery_retry_policy.rb', line 22

def retry_eligible_at(delivery)
  return nil unless retry_expected?(delivery)

  delivery.updated_at + GRACE_WINDOW
end

.retry_expected?(delivery) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
# File 'app/services/command_tower/messaging/delivery_retry_policy.rb', line 17

def retry_expected?(delivery)
  delivery.status == ChannelDelivery::STATUS_FAILED_RETRYABLE &&
    !retries_exhausted?(delivery)
end