Class: CommandTower::Messaging::DeliveryRetryPolicy
- Inherits:
-
Object
- Object
- CommandTower::Messaging::DeliveryRetryPolicy
- 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
- .retries_exhausted?(delivery) ⇒ Boolean
- .retry_eligible_at(delivery) ⇒ Object
- .retry_expected?(delivery) ⇒ Boolean
Class Method Details
.retries_exhausted?(delivery) ⇒ 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
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 |