Sha256: 7d4b1d8863bfb1b5474afcae4ddeecf223614ac0a67899a99d1284b976b8c924

Contents?: true

Size: 1.32 KB

Versions: 4

Compression:

Stored size: 1.32 KB

Contents

require "active_support/core_ext/string"
require "active_support/configurable"
require "active_support/core_ext/numeric/time"
require "sidekiq/grouping/version"
require "concurrent"

module Sidekiq::Grouping
  autoload :Config, "sidekiq/grouping/config"
  autoload :Redis, "sidekiq/grouping/redis"
  autoload :Batch, "sidekiq/grouping/batch"
  autoload :Middleware, "sidekiq/grouping/middleware"
  autoload :Flusher, "sidekiq/grouping/flusher"
  autoload :FlusherObserver, "sidekiq/grouping/flusher_observer"

  class << self
    attr_writer :logger

    def logger
      @logger ||= Sidekiq.logger
    end

    def start!
      interval = Sidekiq::Grouping::Config.poll_interval
      @observer = Sidekiq::Grouping::FlusherObserver.new
      @task = Concurrent::TimerTask.new(
        execution_interval: interval
      ) { Sidekiq::Grouping::Flusher.new.flush }
      @task.add_observer(@observer)
      logger.info(
        "[Sidekiq::Grouping] Started polling batches every #{interval} seconds"
      )
      @task.execute
    end
  end
end

Sidekiq.configure_client do |config|
  config.client_middleware do |chain|
    chain.add Sidekiq::Grouping::Middleware
  end
end

Sidekiq.configure_server do |config|
  config.client_middleware do |chain|
    chain.add Sidekiq::Grouping::Middleware
  end
end

Sidekiq::Grouping.start! if Sidekiq.server?

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sidekiq-grouping-1.0.9 lib/sidekiq/grouping.rb
sidekiq-grouping-1.0.8 lib/sidekiq/grouping.rb
sidekiq-grouping-1.0.7 lib/sidekiq/grouping.rb
sidekiq-grouping-1.0.6 lib/sidekiq/grouping.rb