Module: RocketJob::Batch::Throttle

Extended by:
ActiveSupport::Concern
Included in:
RocketJob::Batch
Defined in:
lib/rocket_job/batch/throttle.rb

Overview

Rocket Job Batch Throttling Framework.

Example:

# Do not run any slices for this job when the MySQL slave delay exceeds 5 minutes.
class MyJob < RocketJob::Job
  include RocketJob::Batch

  # Define a custom mysql throttle
  # Prevents all slices from this job from running on the current server.
  define_batch_throttle :mysql_throttle_exceeded?

  def perform(record)
    # ....
  end

  private

  # Returns true if the MySQL slave delay exceeds 5 minutes
  def mysql_throttle_exceeded?
    status        = ActiveRecord::Base.connection.connection.select_one('show slave status')
    seconds_delay = Hash(status)['Seconds_Behind_Master'].to_i
    seconds_delay >= 300
  end
end

Defined Under Namespace

Modules: ClassMethods