Skip to main content

custom_retry_backoff

🔄 Custom Retry & Backoff Strategy​

Implement a fine‑tuned retry strategy by overriding sidekiq_retry_in and using sidekiq_retries_exhausted to handle dead jobs. This approach gives you complete control over retry intervals and custom notification logic when retries are exhausted.

class PaymentWorker
include Sidekiq::Worker
sidekiq_options retry: 5

# Exponential backoff: 10s, 30s, 60s, etc.
sidekiq_retry_in do |count, exception|
(count**4) + 15
end

# Notify when all retries have failed
sidekiq_retries_exhausted do |msg, ex|
AlertService.notify("PaymentWorker failed after retries", msg: msg, error: ex)
end

def perform(order_id)
Order.find(order_id).process_payment!
end
end