module Backpressure
module_function
def too_deep?(queue, max:)
size = Sidekiq::Queue.new(queue.to_s).size
size > max
end
end
class Emails::DigestJob < ApplicationJob
queue_as :mailers
def perform(member_id)
return if Backpressure.too_deep?(:mailers, max: 50_000)
member = Member.find(member_id)
DigestMailer.weekly(member).deliver_now
end
end
When downstream systems degrade, jobs pile up and amplify outages. Add a simple “queue depth guard” so non-critical jobs skip or reschedule instead of making the backlog worse.